- exports、module.exports遵守的是CommonJS规范
- export、export default 是ES的规范
Node 模块遵循的是CommonJS规范,所以Node里使用的是exports 和 module.exports
CommonJS定义的模块分为:模块标识(module)、模块定义(exports)、模块引用(require)
- module.exports 初始值为一个空对象 { }
- exports 指向的是module.exports 的引用
- require 返回的是module.exports 而不是exports
文档解释:
即: 为了方便,Node为每个模块提供了一个exports变量,指向module.exports:等同于在每个模块头部有一行这样的命令:
var exports = module.exports
于是可以直接在exports对象上添加方法,表示对外输出的接口,如同在module.exports上添加一样
但如果直接将exports指向另一个变量,就切断了exports和 module.exports之间的联系,require引入的只是module.exports, exports的变化与reqiure引入无关了。