node--module模塊--Mr.Ember

 

node--module模塊node

摘要:json

主要是從module的幾個特性講解緩存

 

1. 穩定性  模塊化

export.a = function() {};
export.b = function() {};

這裏兩個函數都是被添加到exports根部的對象上,模塊內本地變量是私有的。函數

 

2. 訪問主模塊ui

require.main === module

若是直接用node執行某個文件,那這個文件就是主模塊,默認被賦值給require.main。spa

 

3. 緩存code

 模塊在第一次加載後就會被緩存,屢次調用不會致使模塊的代碼屢次執行,能夠但會'部分完成'的對象,從而容許加載依賴的模塊,因此不會致使循環依賴。對象

 

4. 循環blog

 當循環調用require()時,一個模塊可能在未完成執行時被返回。

執行順序:
       main.js
       b.js
       a.js
       b.js ->done
       a.js ->done
       main.js -> done

 

 

5. 目錄做爲模塊

 require()尋找路徑先經過尋找package.json中的main模塊,在根據main模塊的路徑,尋找當前所在的路徑位置

 

6. 模塊包裝器(劃重點

 在執行代碼前,node.js會使用下面這個函數把文件包裝起來

(function(exports, require, module, __filename, __dirname) {

  //.......真正要執行的部分

})

 

包裝的緣由

(1)保證定義的變量的模塊化

(2)提供一些看似全局,但其實是模塊特定的變量

7. 模塊的做用域

 (1) __dirname: 當前木塊的目錄

 (2)__filename: 當前木塊的文件名(局對路徑)

 (3)exports: exports雖然是module.exports的簡寫,可是一旦 exports被賦值,module.exports就沒法改變這個值了

 (4)module: 在每一個模塊中,module 的自由變量是一個指向表示當前模塊的對象的引用。 爲了方便,module.exports 也能夠經過全局模塊的 exports 對象訪問。 module實際上不是全局的,而是每一個模塊本地的。

相關文章
相關標籤/搜索