天天看點

NodeJs:“require” 函數詳解,懂這個你就懂NodeJs了

一直想在伺服器端使用一種語言,ruby、phthon和php也都學過,對于我來說使用這三種語言需要一定的上下文切換成本。正在我糾結的時候,NodeJs出現了,而且我自信對Javascript還是比較熟悉的,是以就準備學習一下NodeJs。這樣我的語言組合為:C#、Javascript和NodeJs,全是C Style,幾乎沒有切換成本。

網上關于NodeJs的論述很多,此處不多說。個人認為,NodeJs的程式設計思想和用戶端Javascript保持了一種理念,沒有什麼變化,隻是增加了“require()”函數,是以隻要學好require函數,剩下的問題就是如何更好的使用API了。

相對路徑之目前目錄:./xxx/xxx.js 或 ./xxx/xxx。

相對路徑之上級目錄:../xxx/xxx.js 或 ../xxx/xxx。

絕對路徑:F:/xxx/xxx.js 或 /xxx/xxx.js 或 /xxx/xxx。

require(路徑.擴充名):

如果 路徑.擴充名 存在

執行加載 并 傳回

否則

抛出異常

require(路徑):

如果 路徑.js 存在

如果 路徑.node 存在

如果 路徑/package.json 存在

執行加載(package.json 中 main屬性對應的路徑) 并 傳回

如果 路徑/index.js 存在

如果 路徑/index.node 存在

require(子產品名字):

如果 子產品名字是系統子產品

如果 require(./node_modules/子產品名字) 能加載到子產品  //參考require(路徑)的介紹

如果 require(../node_modules/子產品名字) 能加載到子產品  //參考require(路徑)的介紹

沿着目錄向上逐級執行require(上級目錄/node_modules/子產品名字),如果能加載到子產品  //參考require(路徑)的介紹

檔案結果

NodeJs:“require” 函數詳解,懂這個你就懂NodeJs了

require_study.js中的代碼

輸出結果

 代碼下載下傳:http://yunpan.cn/QWIiPxdZdW8RG

剛接觸NodeJs,還沒有深入學習其API,包括我對require的了解,也不一定正确,歡迎批評和指正。關于require(子產品名字),應該有一個全局查找路徑,今晚我再查查資料。

這篇文章說的更詳細,早知官方有文章,我就不寫了,文章位址:http://nodejs.org/api/modules.html。

架構位址:http://happy.codeplex.com

繼續閱讀