Vue2中的 import 和 require区别与使用方法

import属于 ES6 规范,require 属于 CommonJS 规范。

一、export default & export + import

1、export default function() + import

output.js

export default function () {
    console.log('我是export default 的函数');
}

 demo.vue

<template>
  <div class="">
    <p>测试在vue中import和require的区别</p>
  </div>
</template>
<script>
// export default 时
// import 的名字可以任意起,不加{}
// 因为export default 的和 import 的是一个引用,所以可以重命名
import mytest from "../assets/js/output.js";
export default {
  data() {
    return {};
  },
  mounted() {
    mytest();
  },
  methods: {},
};
</script>

运行结果:

 

 2、export function  pName () + import

output.js

export function printName(name) {
    console.log('我是export的函数,名字是' + name);
}

 demo.vue

<template>
  <div class="">
    <p>测试在vue中import和require的区别</p>
  </div>
</template>
<script>
// export时
// import 的名字必须和 export 的名字一致,必须加{}
// export 和 import 的是同一个对象,所以不能重命名
import { printName } from "../assets/js/output.js";
export default {
  data() {
    return {};
  },
  mounted() {
    printName("alice");
  },
  methods: {},
};
</script>

运行结果:

 3、export default object+ import

output.js

const person = {
    name: "Alice",
    age: 30,
    sex: "female",
    sayHi: function () {
        console.log("hello world");
    }
}
export default person

 demo.vue

<template>
  <div class="">
    <p>测试在vue中import和require的区别</p>
  </div>
</template>
<script>
// export default 时,不加{}
// import 的名字可以任意起,不加{}
// 因为export default 的和 import 的是一个引用,所以可以重命名
import person22 from "../assets/js/output.js";
export default {
  data() {
    return {};
  },
  mounted() {
    console.log(person22);
    person22.sayHi();
  },
  methods: {},
};
</script>

运行结果:

 4、export {info,name} + import

 output.vue

const info = "i am info string";
const name = "Alice";
export {info, name};

demo.js

<template>
  <div class="">
    <p>测试在vue中import和require的区别</p>
  </div>
</template>
<script>
// export时,必须加{}
// import 的名字必须和 export 的名字一致,必须加{}
// export 和 import 的是同一个对象,所以不能重命名
import { info, name } from "../assets/js/output.js";
export default {
  data() {
    return {};
  },
  mounted() {
    console.log(info);
    console.log(name);
  },
  methods: {},
};
</script>

运行结果:

5、export & import 解释说明

  • import 属于 ES6 规范
  • exoprt 和 export default 也是ES6规范
  • export 是导出, export dafault 是默认导出
  • 一个模块可以有多个export, 但是只能有一个export default
  • export default可以和多个export共存

 

二、module.exports & exports.xxx + require

 1、module.exports & require

output.js

const name1 = "Alice";
const person = {
    name: "lilith",
    age: 1000,
    sex: "female",
    sayHi: function () {
        console.log("Hi, I am lilith");
    }
}
module.exports = {
    name1, person
}

 demo.vue

<template>
  <div class="">
    <p>测试在vue中import和require的区别</p>
  </div>
</template>
<script>
export default {
  data() {
    return {};
  },
  mounted() {
    // exports.xxx 是 module.exports一种简写形式
    // exports.xxx 是 module.exports 不要混用
    const mydata = require("../assets/js/output.js");
    console.log({ mydata });
    console.log(mydata.name1);
    mydata.person.sayHi();
  },
};
</script>

运行结果:

 2、exports.xxx & require

output.js

const name1 = "Alice";
const person = {
    name: "lilith",
    age: 1000,
    sex: "female",
    sayHi: function () {
        console.log("Hi, I am lilith");
    }
}
exports.name1 = name1;
exports.person = person;

 demo.vue

<template>
  <div class="">
    <p>测试在vue中import和require的区别</p>
  </div>
</template>
<script>
export default {
  data() {
    return {};
  },
  mounted() {
    // exports.xxx 是module.exports一种简写形式
    // exports.xxx 是module.exports 不要混用
    const mydata = require("../assets/js/output.js");
    console.log({ mydata });
    mydata.person.sayHi();
  },
};
</script>

运行结果:

 

 3、exports & require 解释说明

  • require 属于 CommonJS 规范
  • require是运行时调用,所以是动态执行的,所以在性能上会比import差一些.
  • 导出时是什么样, require 导入时就还是什么样
  • exports是module.exports一种简写形式,不能直接给exports赋值
  • 直接给module.exports赋值时,exports会失效

参考文档:

[1] https://juejin.cn/post/6844903912487518221
[2] https://juejin.cn/post/6844904080955932680#heading-8
posted @ 2022-11-11 15:32  sunshine233  阅读(2331)  评论(0编辑  收藏  举报