CommonJS規範爲Javascript制定了一個美好的願景--但願Javascript可以在任何地方運行。javascript
一、CommonJS的模塊規範java
1 模塊引用node
var math= reuqire('math');
二、模塊定義json
node提供了exports對象用於導出當前的模塊的方法或者變量。而且是惟一的導出出口。在模塊中,還存在一個module對象,它表明模塊自己,而exports是module的屬性緩存
module.exports={}
三、模塊標識ui
模塊標識是傳給require()方法的參數,必須符合小駝峯命名的字符串或者.、..開頭的相對路徑spa
二、Ndoe的模塊實現對象
在Node中引入模塊,須要經歷三個步驟blog
(1)路徑分析遞歸
(2)文件定位
(3)編譯執行
核心模塊部分在Node源碼的編譯過程當中,編譯進了二進制的執行文件。在Node進行啓動時,部分核心模塊就被直接加載進內存了,文件定位和編譯執行會被省去,而且在路徑分析中優先判斷,加載速度最快。
Node也會對引入的模塊進行緩存,緩存的不是文件,而是編譯和執行以後的對象。
自定義文件加載慢的緣由是由於 模塊路徑的生成規則有關
查找規則有點像js的原型和做用域鏈,逐級向上遞歸,直到根目錄下的xxx.js目錄。
小訣竅,未鑑定過(若是.node和.json的文件在傳遞給require()的標識符中帶上擴展名,會加快一點速度)