開始編寫Node應用之前,必須先學會Node的模組和包。模組和包是組成應用的基本單位。一個Node.js檔案就是一個模組,這個檔案可能是Javascript代碼、JSON或者編譯過的C/C++擴充。
var count=0;exports.next=function(){return count++;}
執行個體:
var name;exports.setName=function(thyName){name=thyName;};exports.sayHello=function(){console.log("Hello "+name);};
建立getmodule.js調用模組module.js
var module=require('./module');module.setName('Public');module.sayHello();
最後運行結果是:Hello Public
var hello1=require('./module');hello1.setName('Tom 1');var hello2=require('./module');hello2.setName('Tom 2');hello1.sayHello();
運行結果是:Hello Tom 2
從結果可知,前者被後者覆蓋了,所以最終結果由後者決定。
function Hello(){var name='霍元甲';this.setName=function(thyName){name=thyName;};this.sayHello=function(){console.log('Hello '+name);};}exports.Hello=Hello;
此時我們在其他檔案中需要通過require('./singleobject').Hello來擷取Hello對象,
var Hello=require('./singleobject').Hello;var hello=new Hello();hello.setName('Module');hello.sayHello();
function Hello(){var name='霍元甲';this.setName=function(thyName){name=thyName;};this.sayHello=function(){console.log('Hello '+name);};}module.exports=Hello;
gethello.js
var Hello=require('./hello');var hello=new Hello();hello.setName('Module');hello.sayHello();
注意,模組唯一的變化是將exports.Hello改成了module.exports,在外部參考該模組時,其介面對象就是要輸出的Hello對象本身,而不是原先的exports.