首先我们要明白一个前提,CommonJS模块规范和ES6模块规范完全是两种不同的概念。
1. CommonJS规范
Node应用由模块组成,采用CommonJS模块规范。根据这个规范,每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。
// commonJS
exports.add = function(){
console.log('add function')
}
// or
module.exports = {
add:function() {
console.log('add function')
},
reduce(){
console.log('reduce function')
}
}
为了方便,Node为每个模块提供一个exports变量,指向module.exports。这等同在每个模块头部,有一行这样的命令。
let exports = module.exports;
2. ES6模块规范
不同于CommonJS,ES6使用 export 和 import 来导出、导入模块。
// 导出
let firstName = 'Michael';
let year = 1958;
export {firstName, year};
// 导入
import {firstName, year} from './xxx/xxx'
console.log(firstName, year)
export default 为模块指定默认输出,一个js文件只能有一个默认导出。
// default 的方法名,需要在function之后
export default function get() {
console.log('get');
}
// const let 不需要
export const get = function() {
console.log('get');
}
相关文档:
CommonJS规范:http://javascript.ruanyifeng.com/nodejs/module.html
ES6 模块语法:http://es6.ruanyifeng.com/#docs/module
网友评论