NodeJS 模塊路徑解析規(guī)則

2018-09-28 20:35 更新

模塊路徑解析規(guī)則

有經驗的 C 程序員在編寫一個新程序時首先從 make 文件寫起。同樣的,使用 NodeJS 編寫程序前,為了有個良好的開端,首先需要準備好代碼的目錄結構和部署方式,就如同修房子要先搭腳手架。本章將介紹與之相關的各種知識。

模塊路徑解析規(guī)則

我們已經知道,require函數支持斜杠(/)或盤符(C:)開頭的絕對路徑,也支持./開頭的相對路徑。但這兩種路徑在模塊之間建立了強耦合關系,一旦某個模塊文件的存放位置需要變更,使用該模塊的其它模塊的代碼也需要跟著調整,變得牽一發(fā)動全身。因此,require函數支持第三種形式的路徑,寫法類似于foo/bar,并依次按照以下規(guī)則解析路徑,直到找到模塊位置。

內置模塊

如果傳遞給 require 函數的是 NodeJS 內置模塊名稱,不做路徑解析,直接返回內部模塊的導出對象,例如require('fs')。

node_modules 目錄

NodeJS 定義了一個特殊的 node_modules 目錄用于存放模塊。例如某個模塊的絕對路徑是 /home/user/hello.js,在該模塊中使用 require('foo/bar') 方式加載模塊時,則 NodeJS 依次嘗試使用以下路徑。

 /home/user/node_modules/foo/bar
 /home/node_modules/foo/bar
 /node_modules/foo/bar

NODE_PATH 環(huán)境變量

與 PATH 環(huán)境變量類似,NodeJS 允許通過 NODE_PATH 環(huán)境變量來指定額外的模塊搜索路徑。NODE_PATH 環(huán)境變量中包含一到多個目錄路徑,路徑之間在 Linux 下使用:分隔,在 Windows 下使用;分隔。例如定義了以下 NODE_PATH 環(huán)境變量:

 NODE_PATH=/home/user/lib:/home/lib

當使用 require('foo/bar')的方式加載模塊時,則 NodeJS 依次嘗試以下路徑。

 /home/user/lib/foo/bar
 /home/lib/foo/bar
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號