具體解釋能夠日後看。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