module.exports和exports.md
阿新 • • 發佈:2018-06-03
IV 技術 每一個 test TE node.js his source func
推薦寫法
具體解釋可以往後看。
'use strict'
let app = { // 註冊全局對象
...
}
... // 封裝工具箱
exports = module.exports = app // 導出工具箱
原理
- 每一個
node.js
執行文件,都自動創建一個module
對象,同時,module
對象會創建一個叫exports
的屬性,初始化的值是{}
。即:module.exports = {}
exports
是引用module.exports
的值- 模塊導出的時候,真正導出的執行是
module.exports
,而不是exports
1與2的demo
foo.js
'use strict'
module.exports.sayHello = function(){
console.log(this.name)
}
exports.name = 'foo.js' // exports引用module.exports的值
test.js
'use strict'
let foo = require('./foo')
foo.sayHello()
3的demo
為了驗證真正導出的是
module.exports
而不是exports
,我們對foo.js
修改如下:
'use strict'
module.exports = {
sayHello:function(){
console.log(this.name)
},
name:'module.exports'
}
exports.sayHello = function(){
console.log('exports')
}
test.js
的輸出就是:module.exports
。
因為module.exports
的引用改變(js
中對象的賦值都是引用),斷開了和exports
的連接,而真正導出的只是module.exports
。
歡迎技術交流,引用請註明出處。
個人網站:哥有內涵.com
Github:godbmw
module.exports和exports.md