node--module模組--Mr.Ember
阿新 • • 發佈:2019-01-03
node--module模組
摘要:
主要是從module的幾個特性講解
1. 穩定性
export.a = function() {}; export.b = function() {};
這裡兩個函式都是被新增到exports根部的物件上,模組內本地變數是私有的。
2. 訪問主模組
require.main === module
如果直接用node執行某個檔案,那這個檔案就是主模組,預設被賦值給require.main。
3. 快取
模組在第一次載入後就會被快取,多次呼叫不會導致模組的程式碼多次執行,可以但會'部分完成'的物件,從而允許載入依賴的模組,所以不會導致迴圈依賴。
4. 迴圈
當迴圈呼叫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
實際上不是全域性的,而是每個模組本地的。