標籤:模組 檔案 使用 var 舉例 指定 foo script 預設
require命令用於負載檔案,尾碼名預設為.js。
var foo = require(‘foo‘);// 等同於var foo = require(‘foo.js‘);
根據參數的不同格式,require命令去不同路徑尋找模組檔案。
(1)如果參數字串以“/”開頭,則表示載入的是一個位於絕對路徑的模組檔案。比如,require(‘/home/marco/foo.js‘)將載入/home/marco/foo.js。
(2)如果參數字串以“./”開頭,則表示載入的是一個位於相對路徑(跟當前執行指令碼的位置相比)的模組檔案。比如,require(‘./circle‘)將載入當前指令碼同一目錄的circle.js。
(3)如果參數字串不以“./“或”/“開頭,則表示載入的是一個預設提供的核心模組(位於Node的系統安裝目錄中),或者一個位於各級node_modules目錄的已安裝模組(全域安裝或局部安裝)。
舉例來說,指令碼/home/user/projects/foo.js執行了require(‘bar.js‘)命令,Node會依次搜尋以下檔案。
- /usr/local/lib/node/bar.js
- /home/user/projects/node_modules/bar.js
- /home/user/node_modules/bar.js
- /home/node_modules/bar.js
- /node_modules/bar.js
這樣設計的目的是,使得不同的模組可以將所依賴的模組本地化。
(4)如果參數字串不以“./“或”/“開頭,而且是一個路徑,比如require(‘example-module/path/to/file‘),則將先找到example-module的位置,然後再以它為參數,找到後續路徑。
(5)如果指定的模組檔案沒有發現,Node會嘗試為檔案名稱添加.js、.json、.node後,再去搜尋。.js件會以文字格式設定的JavaScript指令檔解析,.json檔案會以JSON格式的文字檔解析,.node檔案會以編譯後的二進位檔案解析。
(6)如果想得到require命令載入的確切檔案名稱,使用require.resolve()方法。
commonJS -- require