1参淫、絕對(duì)路徑
require函數(shù)支持斜杠(/)或盤(pán)符(C:)開(kāi)頭的絕對(duì)路徑福稳,
2、相對(duì)路徑:
支持./開(kāi)頭的相對(duì)路徑途茫。
但這兩種路徑在模塊之間建立了強(qiáng)耦合關(guān)系碟嘴,一旦某個(gè)模塊文件的存放位置需要變更,使用該模塊的其它模塊的代碼也需要跟著調(diào)整囊卜,變得牽一發(fā)動(dòng)全身娜扇。
3、require函數(shù)支持第三種形式的路徑栅组,寫(xiě)法類(lèi)似于foo/bar雀瓢,并依次按照以下規(guī)則解析路徑,直到找到模塊位置玉掸。
a刃麸、內(nèi)置模塊
如果傳遞給require函數(shù)的是NodeJS內(nèi)置模塊名稱(chēng),不做路徑解析排截,直接返回內(nèi)部模塊的導(dǎo)出對(duì)象嫌蚤,例如require('fs')辐益。
b断傲、node_modules目錄
NodeJS定義了一個(gè)特殊的node_modules目錄用于存放模塊脱吱。例如某個(gè)模塊的絕對(duì)路徑是/home/user/hello.js,在該模塊中使用require('foo/bar')方式加載模塊時(shí)认罩,則NodeJS依次嘗試使用以下路徑箱蝠。
/home/user/node_modules/foo/bar
/home/node_modules/foo/bar
/node_modules/foo/bar
c、NODE_PATH環(huán)境變量
與PATH環(huán)境變量類(lèi)似垦垂,NodeJS允許通過(guò)NODE_PATH環(huán)境變量來(lái)指定額外的模塊搜索路徑宦搬。NODE_PATH環(huán)境變量中包含一到多個(gè)目錄路徑,路徑之間在*nix下使用:分隔劫拗,在Windows下使用;分隔间校。例如定義了以下NODE_PATH環(huán)境變量:
NODE_PATH=/home/user/lib:/home/lib
當(dāng)使用require('foo/bar')的方式加載模塊時(shí),則NodeJS依次嘗試以下路徑页慷。
/home/user/lib/foo/bar
/home/lib/foo/bar