Node 模塊加載彙總

Nodejs 模塊大概可分爲4種:

a) builtin module Nodejs中以C++形式提供的文件模塊。

b) constant module Nodejs中定義常量的文件模塊。

c) native module Nodejs中以javascript形式提供的核心模塊。

d) 第三方module 由第三方提供的文件模塊。

一、模塊加載步驟

1、路徑查找

文件查找是先查找當前目錄的node_modules,然後查找父目錄的node_modules,然後逐級向上查找

2、文件定位

1) 緩存
2) 如果是絕對路徑, 則直接按路徑讀取並編譯
3) 如果是“/”則直接從/node_modules目錄查找
4) 如果是相對路徑, 則生成如下查詢規則,

[/home/myapp/mydir/node_module‘,/home/myapp/node_module‘   
    ‘/home/node_module‘,/node_module‘
]
 

5) 從上述數組中取出第一個目錄作爲查找對象, 如果存在結束查找
6) 然後依次嘗試添加.js、.json、.node後綴繼續查找, 如果存在則結束
7) 嘗試將require參數作爲一個包查找, 讀取目錄下的package.json文件, 取得main參數指定的文件
8) 根據指定的文件未找到, 如果沒有,執行第6步
9) 如果main參數不存在或者第8步未找到, 則查找該目錄下index文件, 如果沒有, 執行第6步
10) 如果依然沒有找到, 則開始取出數組第二條路徑, 然後執行5-7步。 直到數組中最後一個值
11) 如果還沒找到, 拋出異常
在這裏插入圖片描述

3、模塊編譯

編譯分爲三種情況,js模塊、c/c++模塊、json模塊

4、模塊緩存

核心模塊編譯成功後緩存在NativeModule._cache
文件模塊編譯成功後緩存在Module._cache

相關參考

  1. Nodejs模塊載入運行原理
  2. node.js 中的核心模塊 Core Modules 加載順序及規則
  3. 深入淺出node.js學習筆記—node模塊加載機制
  4. 深入淺出nodejs(一) 模塊加載機制
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章