import and require
1. import 是什么
代码语言:javascript
复制import 是一个 promise 对象
2. import 和 require
代码语言:javascript
复制require/exports: CommonJs/AMD 中为了解决模块化语法而引入的
代码语言:javascript
复制import/export: ES6 引入的新规范
2.1 调用时间
代码语言:javascript
复制require 是运行时调用,所以理论上可以运作在代码的任何地方
代码语言:javascript
复制import 是编译时调用,所以必须放在文件的开头
2.2 本质
代码语言:javascript
复制require 是赋值过程,其实 require 的结果就是对象、数字、字符串、函数等,再把结果赋值给某个变量,它就是普通的值传递。
代码语言:javascript
复制import 是结构过程,使用 import 导入模块的属性或者方法是引用传递,且 import 是 readonly,值是单向传递的.
2.3 用法展示
require
代码语言:javascript
复制// module.js
module.exports = {
print: function() {
console.log(123);
}
};
// sample.js
var obj = require('./module.js');
obj.a();
import
代码语言:javascript
复制// module.js
export default function test(args) {
console.log(args);
};
// sample.js
import test from './module.js';
test();
2.4 总结
- 通过 require 引入基础数据类型时,属于复制改变量
- 通过 require 引入复杂数据类型时,属于浅拷贝该对象
- 出现模块之间循环引用时,会输出已执行的模块,未执行的模块不会输出
- CommonJs 规范默认 export 是一个对象,即使对象导出的是一个基础数据类型