1.ES6模块化(静态编译)
在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种。前者用于服务器,后者用于浏览器。
1.1模块中导出数据
// module1.js
export var firstName = 'Michael';
export var lastName = 'Jackson';
export var year = 1958;
// module2.js
function say() {}
function eat() {}
export default {
say,
eat
}
导入模块
import {firstName, lastName, year} from './module1.js';
import {say, eat} from './module2.js';
2.CommonJS模块化(运行时编译)
在文件a.js中用exports或module.exports导出的对象(方法、变量),可以在另一个文件b.js中通过require('./a')引用。
- module.exports 初始值为一个空对象 {}
- exports 是指向的 module.exports 的引用
- require() 返回的是 module.exports 而不是 exports
//people.js
module.exports = {name: '叔叔'};
exports = {name: '老阿姨'};
//main.js
let people = require('./people');
console.log(people);//输出:{name: '叔叔'}