具体解释能够日后看。javascript
'use strict' let app = { // 注册全局对象 ... } ... // 封装工具箱 exports = module.exports = app // 导出工具箱
node.js
执行文件,都自动建立一个module
对象,同时,module
对象会建立一个叫exports
的属性,初始化的值是 {}
。即:module.exports = {}
exports
是引用 module.exports
的值module.exports
,而不是exports
foo.js
java
'use strict' module.exports.sayHello = function(){ console.log(this.name) } exports.name = 'foo.js' // exports引用module.exports的值
test.js
node
'use strict' let foo = require('./foo') foo.sayHello()
为了验证真正导出的是
module.exports
而不是exports
,咱们对foo.js
修改以下:git
'use strict' module.exports = { sayHello:function(){ console.log(this.name) }, name:'module.exports' } exports.sayHello = function(){ console.log('exports') }
test.js
的输出就是:module.exports
。github
由于module.exports
的引用改变(js
中对象的赋值都是引用),断开了和exports
的链接,而真正导出的只是module.exports
。app