標籤:模組 檔案 使用 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