溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Node.js中模塊機制的原理是什么

發(fā)布時間:2021-07-21 09:08:55 來源:億速云 閱讀:163 作者:Leah 欄目:大數(shù)據

本篇文章為大家展示了Node.js中模塊機制的原理是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

Node的模塊規(guī)范

其實模塊的定義非常簡單,主要分為模塊引用,模塊定義和模塊標識三個部分。

1)模塊引用

Node.js中存在require()方法,這個方法接受模塊標識,以此引入一個模塊的API到當前的上下文中。

Node.js中模塊機制的原理是什么

2)模塊定義

既然我們可以用require()來引入模塊,那自然也可以引出模塊。Node.js提供了exports對象用于導出當前模塊的方法和變量,并且exports是唯一導出的出口。在每個模塊中,存在一個module對象,表示模塊本身,exports其實就是module的一個屬性。在Node.js中,一個文件其實就是一個模塊,將我們需要導出的方法和屬性綁定在exports對象上作為屬性就可以將該方法或屬性導出。

Node.js中模塊機制的原理是什么

在另一個模塊,可以通過require()引入模塊,就可以使用導出的方法sum()

Node.js中模塊機制的原理是什么

3)模塊標識

模塊標識其實傳遞給require()方法的參數(shù),模塊標識必須是符合駝峰命名的字符串或者以./,../開頭的路徑,引入模塊模塊標識可以省略.js后綴。

模塊的好處是將特定的方法和變量限定在特定的作用域中,使得開發(fā)者完全不必去考慮變量污染的問題。

Node.js的模塊實現(xiàn)

在Node.js中,有三類模塊,其中一類是Node.js提供的核心模塊,就比如上一篇說過的fs文件模塊,database數(shù)據庫模塊,還有一類是開發(fā)者自行編寫的文件模塊,就比如剛才示例的test.js模塊,第三類就是自定義模塊,這是一種特殊的文件模塊,一般是一個文件或包的形式,比如引入mysql所需的jar包。

Node.js中引入模塊,需要經歷三步:

(1)路徑分析

對于文件模塊來說,引入時模塊標識指明了確切的文件位置,所以在路徑分析中可以省略大量時間,加載速度僅次于核心模塊。

自定義模塊則是會從項目根目錄逐個比較路徑,直到找到目標模塊為止。所以,自定義模塊的路徑越深,路徑分析的耗時越多,所以自定義模塊的加載速度是最慢的。

(2)文件定位

剛才其實說過了,模塊標識可以不包含后綴名,所以Node.js在文件定位時會依次補充.js,.json,.node后綴名,然后去進行文件定位,因為Node.js是單線程,所以文件定位時會發(fā)生堵塞,所以如果引入的模塊后綴是.json或者.node,可以在引入的時候加上后綴,可以提高查找速度。

(3)編譯執(zhí)行

定義到具體文件后,Node.js會創(chuàng)建一個模塊對象,然后將模塊引入并且編譯。每一個編譯成功的模塊其文件路徑都會作為索引緩存在緩存對象上,以提高二次引入模塊的性能。

核心模塊在Node.js源代碼的編譯過程中,直接被編譯成二進制文件,然后被直接加載到內存中,所以核心模塊引入時,文件定位和編譯執(zhí)行這兩個步驟可以直接跳過,并且核心模塊在路徑分析中會被優(yōu)先判斷,所以核心模塊的加載速度是最快的。

文件模塊則是在執(zhí)行時動態(tài)加載,所以路徑分析,文件定位以及編譯執(zhí)行這三個步驟都不可省略,所以加載速度比核心模塊慢。

Node.js對引入過的模塊會進行緩存,以減少二次引入模塊的性能開銷二次加載模塊一律采用緩存優(yōu)先方式。核心模塊的緩存檢查優(yōu)先于文件模塊。

包管理工具NPM

剛才說到Node模塊,但是雖然我們可以引用模塊,但是模塊與模塊之間仍然是散列在各地的,相互之間并不能直接引用。而Node的包管理工具NPM則將模塊相互聯(lián)系起來。包其實是在模塊的基礎上進一步組織JavaScript代碼。

其實NPM會有一個包描述文件package.json,一般位于包的根目錄, NPM的所有行為都與包描述文件息息相關。前面幾篇有講過NPM作為默認包管理工具,會作為Node環(huán)境被一起安裝。

Node.js中模塊機制的原理是什么

NPM常用功能

NPM幫助Node完成了第三方模塊的發(fā)布,安裝和依賴。因為有NPM的存在,Node和第三方模塊之間形成了很好的一個生態(tài)系統(tǒng),而且逐漸越來越強大。接下來大致講解下幾個NPM常見命令

  1. npm --version  查看當前NPM的版本

    Node.js中模塊機制的原理是什么

  2. npm  查看幫助說明


    Node.js中模塊機制的原理是什么

  3. npm help 查看具體命令說明

    執(zhí)行命令會在瀏覽器中打開對應命令的說明文檔


    Node.js中模塊機制的原理是什么

    Node.js中模塊機制的原理是什么

  4. npm install  安裝依賴包,默認使用–-save參數(shù),即默認添加到package.json

    執(zhí)行該命令,NPM會在當前目錄創(chuàng)建node_modules目錄,然后再node_modules創(chuàng)建對應依賴包的目錄,然后將依賴包解壓到該目錄。


    Node.js中模塊機制的原理是什么

  5. npm init 在此目錄初始化生成package.json文件

    Node.js中模塊機制的原理是什么

7.npm uninstall <package> 卸載依賴包, 默認使用-–save參數(shù),即從package.json中移除

Node.js中模塊機制的原理是什么

8.npm ls查看當前目錄的依賴包

Node.js中模塊機制的原理是什么

9.npm root -g 查看全局安裝地址

Node.js中模塊機制的原理是什么

10.npm list <package>查看依賴的當前版本

Node.js中模塊機制的原理是什么

NPM存在的問題

NPM平臺,每個人都可以分享包,所以包質量沒有辦法保證,而且Node.js運行在服務端,所以需要考慮安全問題。所以一個優(yōu)秀的模塊需要符合幾大模塊:

        (1)具備良好的測試

        (2)具備良好的文檔

        (3)具備良好的測試覆蓋率

        (4)具備良好的代碼規(guī)范

上述內容就是Node.js中模塊機制的原理是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI