在node.js中,可以透過require()引入npm_modules中的module,當然也可以引入自己發開發的module,例如:
//預設會抓取該資料夾的index.js var test = require('./test_module');
在module之中,一定會有許多變數或function等等需要跟主程式溝同,透過module.exports就可以達到這點
test_module/index.js
console.log("Start test module"); module.exports.text = "This is test module"; module.exports.say = function (str) { console.log(str); }
app.js
var test = require('./test_module'); //test_module的變數 console.log(test.text); //test_module的function test.say("Johnson");
或者也可以直接取代成object
test_module/index.js
module.exports = function(name, age) { this.name = name; this.age = age; this.about = function() { console.log(this.name +' is '+ this.age +' years old'); }; };
app.js
var test = require('./test_module'); var t = new test('johsnon','24'); t.about();
另外網路上有許多使用exports與module.exports的討論,由於module.exports執行時會去將global.exports取代成self.exports(node-source/lib/module.js)
所以以下這種狀況就會出錯
module.exports = {a: 1}; exports.b = 2;
有一種解法是將module.exports跟global.exports綁在一起
exports = module.exports = Object;
不過目前使用結果,如果不要混用就不會有上述問題發生