Node.js 是一套基於事件驅動、非同步 I/O 的開源跨平台 JavaScript 執行階段環境。在 Node.js 中,使用模組來組織程式碼,每個模組都是一個獨立的文件,可以透過導入/導出進行模組間呼叫和邏輯復用。本文將介紹 Node.js 模組的基本用法。
在 Node.js 中,使用 require() 函數導入模組。 require() 函數的參數為需要導入的模組名,模組名可以是相對路徑或絕對路徑,也可以是系統模組。
const module1 = require('./module1') const module2 = require('./module2') const fs = require('fs')
在 Node.js 中,使用 module.exports 物件或 exports 物件導出模組。 module.exports 和 exports 的預設值都是空物件 {},但是 module.exports 可以被重新賦值,而 exports 只是 module.exports 的一個引用,不能被重新賦值。
function add(a, b) { return a + b } module.exports = { add: add } exports.sub = function(a, b) { return a - b }
載入模組時,Node.js 會快取已載入的模組以提高運作效率。當第二次載入相同的模組時,Node.js 會直接從快取中讀取,而不是重新載入。
在require() 函數中指定的模組名稱若不是系統模組,則會依照下列順序解析模組路徑:
1.如果指定名字的模組是核心模組,則跳過後續的路徑解析,直接傳回該模組;
2.如果指定名字的模組以'./' 或'../' 開頭,則依照路徑解析規則來定位模組檔。路徑解析規則是:如果包含該模組的目錄是目前目錄,則尋找該目錄下的指定檔案。如果包含該模組的目錄是已新增至 $NODE_PATH 環境變數的目錄,則在該目錄下尋找指定檔案。如果包含該模組的目錄不在上述兩種目錄中,則在目前目錄和已新增至$NODE_PATH 環境變數的目錄中依序尋找指定檔案;
3.如果指定名字的模組不是一個核心模組,也不是以'./' 或'../' 開頭的文件名,則按照以下順序依次查找模組文件:
1.在包含该模块的目录下查找 node_modules 目录; 2.在当前目录下查找 node_modules 目录; 3.在已添加到 $NODE_PATH 环境变量的目录中查找 node_modules 目录;
4.如果仍然找不到指定的模組文件,則拋出錯誤。
在 Node.js 中,允許模組之間進行循環引用,但是循環引用可能會導致模組未定義的問題。為了避免模組的循環引用,需要注意使用導出的方式和導入的時機。
本文介紹了 Node.js 模組的基本用法,包括導入模組、導出模組、模組快取、模組路徑解析順序和模組的循環引用等。了解這些內容將有助於我們更好地理解和使用 Node.js 模組化程式設計的想法。
以上是nodejs模組怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!