日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

若要加载模块二进制_春哥说 | 浅谈NodeJs的模块机制-2

發(fā)布時(shí)間:2025/6/17 编程问答 75 豆豆
生活随笔 收集整理的這篇文章主要介紹了 若要加载模块二进制_春哥说 | 浅谈NodeJs的模块机制-2 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

★ 目錄 ★

01

Node的模塊實(shí)現(xiàn)概述

02

優(yōu)先從緩存中加載

03

路徑分析和文件定位

Node的模塊實(shí)現(xiàn)概述

Nodejs再集成CommonJs的模塊機(jī)制的規(guī)范時(shí)進(jìn)行了取舍,同時(shí)增加了特性。

Nodejs在引入模塊,主要是分為三個(gè)步驟:

  • 路徑分析
  • 文件定位
  • 文件編譯

同時(shí),模塊主要分為兩類。核心模塊和文件模塊。

核心模塊:

由NodeJs提供的模塊,并且部分核心模塊在NodeJS進(jìn)程啟動時(shí)就編譯成二進(jìn)制文件,加載進(jìn)了內(nèi)存中。

在引入時(shí)則省略文件定位和文件編譯兩個(gè)步驟,并且具有最高優(yōu)先級。

文件模塊:

由用戶提供的模塊,在NodeJs進(jìn)程動態(tài)運(yùn)行時(shí)進(jìn)行引入。

優(yōu)先從緩存中加載

NodeJs在引入模塊的過程中,會使用緩存進(jìn)行優(yōu)化性能。

與瀏覽器緩存文件不同,NodeJs會對引入過的文件進(jìn)行緩存,緩存編譯執(zhí)行后的對象。

此時(shí)緩存進(jìn)內(nèi)存中的模塊具有最高優(yōu)先級。核心模塊緩存檢查高于文件模塊緩存檢查。

路徑分析和文件定位

文件標(biāo)識符存在多種形式,那么對于這些差異,模塊的查找和定位也存在區(qū)別。

模塊標(biāo)識符的分析

在通過require()進(jìn)行引入模塊時(shí),需要傳入一個(gè)標(biāo)識符。

標(biāo)識符主要具有以下類型:

  • 核心模塊http,buffer,fs等;
  • .或..開始的相對路徑;
  • 以/開始的絕對路徑;
  • 非路徑形式的文件模塊,如自定義的connect模塊。

核心模塊

核心模塊在服務(wù)啟動時(shí)就已經(jīng)編譯成二進(jìn)制代碼,其加載過程最快,優(yōu)先級僅次于緩存加載。

路徑形式的模塊

以.,..和/開始的標(biāo)識符都被轉(zhuǎn)換為真實(shí)文件路徑為索引的模塊,并且在編譯后將會加載進(jìn)緩存中,其速度僅次于核心模塊加載。

自定義模塊

自定義模塊非核心模塊也不是路徑形式的標(biāo)識符,是一種特殊的文件模塊。可能是一個(gè)文件或一個(gè)包的形式,這類模塊的查找是最費(fèi)事的,也是所有方式中最慢的。

在這之前我們先知道什么是模塊路徑。

模塊路徑是Node在定位文件模塊的具體文件時(shí)制定的查找策略,具體表現(xiàn)為一個(gè)路徑組成的數(shù)組。

我們可以動手嘗試以下:

module_path.js

然后執(zhí)行這個(gè)腳本

可以看出模塊路徑的生成規(guī)則,從當(dāng)前目錄下的node_module的文件夾開始,遞歸搜索父目錄直至根目錄。

類似于Javascript的原型鏈或者作用域鏈。在加載過程中逐個(gè)嘗試模塊路徑路徑,直至找到目標(biāo)文件。

并且可以看出文件嵌套越深,耗時(shí)越久,這也是為什么自定義模塊加載最慢的原因。

文件定位

文件拓展名的分析

require()在分析標(biāo)識符時(shí),會出現(xiàn)沒有文件拓展名的情況。在這種情況,使用的是CommonJs的處理方式,是按js,json和node拓展名依次嘗試。

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的若要加载模块二进制_春哥说 | 浅谈NodeJs的模块机制-2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。