小知識:node.js裡 exports 和 module.exports
阿新 • • 發佈:2018-11-24
這兩者都是要暴露API,exports 是module.exports的一個引用,預設情況下就是一個物件:
exports: 通過形式如(exports.變數名)這種方式暴露的各種變數,最後都會歸到一個未命名的物件之下,這個物件的命名則在要引入的模組中定義,程式碼如下。
/**module_a.js*/ exports.name = 'jhon'; exports.data = 'there are some data'; var privateVal = 5; exports.getVal = function () { return privateVal } /**index.js*/ var a = require('./module_a'); console.log(a.name); //john console.log(a.data); // there are some data console.log(a.getVal()); // 5
在module_a.js裡exports出來的各種變數,函式,在引入index.js時候,統一歸到自定義變數a下面,成為a的屬性。
module.exports: module.exports就不限定是一個物件了,可以是多個物件的集合:
/**module_b.js*/ var data = 'there are some data'; var cg = function () { console.log(1); }; var obj = { age:18, act:function () { console.log(haha); }, } module.exports = { obj,data,cg } /**index_b.js*/ var b = require('./module_b'); console.log(b.data); //there are some data console.log(b.cg()); // 1 console.log(b.obj); //{ age: 18, act: [Function: act] }