1. 程式人生 > >小知識:node.js裡 exports 和 module.exports

小知識:node.js裡 exports 和 module.exports

這兩者都是要暴露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] }