export 和 exports

首先我们要明白一个前提,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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容