Node module模組詳解
在開發複雜Web應用的時候,通常需要把各個功能進行拆分、封裝到不同的文件並在需要的時候引用該文件,也就是進行程式碼的模組化管理。幾乎所有的程式語言都有自己的模組組織方式,像是Java中的套件、C#中的程式集,而Node則採用CommonJS模組規格。
模組規範
CommonJS旨在將運行在瀏覽器之外的JS標準化,並且已經解決了大量的JS問題(如全域命名衝突)。 Node對CommonJS的實作中,每個模組都會被封裝在一個單獨的JS檔案中,也就是一個檔案就是一個模組,而檔案路徑就是一個模組名稱。在編寫每個模組時,都有以下三個預先定義好的變數可供使用:
require()
該函數用於在在當前模組中載入和使用別的模組,傳入一個模組名,回傳一個模組導出物件。模組名稱可以使用相對路徑(以./開頭),也可以使用絕對路徑(以/或C: 之類的盤符開頭)。另外,模組名稱中的.js 副檔名是可以省略的,此時Node會尋找同名的資料夾,如果找不到,則找同名的js檔。也可以使用該函數載入和使用一個JSON文件,但此時.json 副檔名不可省略。
exports
該物件是目前模組的匯出對象,用於匯出模組公有方法和屬性,預設為一個空物件{}。別的模組透過require()函數使用當前模組時得到的就是當前模組的exports物件。以下程式碼中匯出了一個公有方法:
exports.hello = function() { console.log("Hello World!"); };
module
該物件用於提供目前模組的元數據等相關信息,但用途最多的是使用其exports屬性替換當前模組的導出對象。例如模組導出對象預設是一個普通對象,可以使用以下方式使其變成一個函數:
module.exports = function() { console.log("Hello World!"); };
注意:當使用以上方式時,對exports對象的所有修改都將被忽略!
模組初始化
一個模組中的JS程式碼僅在模組第一次使用時執行一次,並在執行過程中初始化模組的導出物件。之後,快取起來的導出物件被重複利用。
在test.js定義一個模組
//定义私有变量 var name = ""; function setName(n) { name = n; } function logName() { console.log(name); } //导出公有方法 exports.setName = setName; exports.logName = logName;
在main中載入test模組
//加载test模块 var test1 = require("./test.js"), test2 = require("./test.js"); //使用test1 test1.setName("Neo"); //使用test2 test2.logName(); //Neo
可見,無論呼叫多少次require() ,對於同一個模組只載入一次,引用多次取得的其實是相同的實例。
主模組
透過命令列參數傳遞給Node以啟動程式的模組稱為主模組,主模組負責調度組成整個應用程式的其他模組協同工作。例如透過以下命令列啟動程式時,main.js 就是主模組:
$ node main.js
二進位模組
Node除了可以使用JS編寫模組,也支援使用C/C++編寫二進位模組,編譯好的二進位模組除了檔案副檔名是.node外,和JS模組的使用方式相同。雖然二進位模組能使用作業系統提供的所有功能,但難以跨平台使用。
相關推薦:
#
以上是Node module模組詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Windows作業系統是全球最受歡迎的作業系統之一,其新版本Win11備受矚目。在Win11系統中,管理員權限的取得是一個重要的操作,管理員權限可以讓使用者對系統進行更多的操作和設定。本文將詳細介紹在Win11系統中如何取得管理員權限,以及如何有效地管理權限。在Win11系統中,管理員權限分為本機管理員和網域管理員兩種。本機管理員是指具有對本機電腦的完全管理權限

C++中的眾數函數詳解在統計學中,眾數指的是一組資料中出現次數最多的數值。在C++語言中,我們可以透過寫一個眾數函數來找出任意一組資料中的眾數。眾數函數的實作可以採用多種不同的方法,以下將詳細介紹其中兩種常用的方法。第一種方法是使用哈希表來統計每個數字出現的次數。首先,我們需要定義一個哈希表,將每個數字作為鍵,出現次數作為值。然後,對於給定的資料集,我們遍

OracleSQL中的除法運算詳解在OracleSQL中,除法運算是一種常見且重要的數學運算運算,用來計算兩個數相除的結果。除法在資料庫查詢中經常用到,因此了解OracleSQL中的除法運算及其用法是資料庫開發人員必備的技能之一。本文將詳細討論OracleSQL中除法運算的相關知識,並提供具體的程式碼範例供讀者參考。一、OracleSQL中的除法運算

C++中的取餘函數詳解在C++中,取餘運算子(%)用於計算兩個數相除的餘數。它是一種二元運算符,其運算元可以是任何整數型別(包括char、short、int、long等),也可以是浮點數型別(如float、double)。取餘運算子傳回的結果與被除數的符號相同。例如,對於整數的取餘運算,我們可以使用以下程式碼來實作:inta=10;intb=3;

Vue.nextTick函數用法詳解及在非同步更新中的應用在Vue開發中,經常會遇到需要進行非同步更新資料的情況,例如在修改DOM後需要立即更新資料或在資料更新後需要立即進行相關操作。而Vue提供的.nextTick函數就是為了解決這類問題而出現的。本文將會詳細介紹Vue.nextTick函數的用法,並結合程式碼範例來說明它在非同步更新中的應用。一、Vue.nex

PiNetwork節點詳解及安裝指南本文將詳細介紹PiNetwork生態系統中的關鍵角色——Pi節點,並提供安裝和配置的完整步驟。 Pi節點在PiNetwork區塊鏈測試網推出後,成為眾多先鋒積極參與測試的重要環節,為即將到來的主網發布做準備。如果您還不了解PiNetwork,請參考Pi幣是什麼?上市價格多少? Pi用途、挖礦及安全性分析。什麼是PiNetwork? PiNetwork項目始於2019年,擁有其專屬加密貨幣Pi幣。該項目旨在創建一個人人可參與

身份驗證是任何網路應用程式中最重要的部分之一。本教程討論基於令牌的身份驗證系統以及它們與傳統登入系統的差異。在本教程結束時,您將看到一個用Angular和Node.js編寫的完整工作演示。傳統身份驗證系統在繼續基於令牌的身份驗證系統之前,讓我們先來看看傳統的身份驗證系統。使用者在登入表單中提供使用者名稱和密碼,然後點擊登入。發出請求後,透過查詢資料庫在後端驗證使用者。如果請求有效,則使用從資料庫中獲取的使用者資訊建立會話,然後在回應頭中傳回會話訊息,以便將會話ID儲存在瀏覽器中。提供用於存取應用程式中受

PHP中的模運算子(%)是用來取得兩個數值相除的餘數的。在本文中,我們將詳細討論模運算子的作用及用法,並提供具體的程式碼範例來幫助讀者更好地理解。 1.模運算子的作用在數學中,當我們將一個整數除以另一個整數時,就會得到一個商和一個餘數。例如,當我們將10除以3時,商數為3,餘數為1。模運算子就是用來取得這個餘數的。 2.模運算子的用法在PHP中,使用%符號來表示模
