Node學習筆記之模組實現

2022-05-17 12:55:45 字數 1375 閱讀 5492

一、模組分類

由node提供的模組,稱為核心模組;部分核心模組在node源**的編譯過程中,編譯進了二進位制執行檔案。在node程序啟動時,該部分就直接載入進記憶體,檔案定位和編譯執行的步驟可以省略掉,並且在路徑分析中優先判斷,所以它的載入速度是最快的

使用者編寫的模組,成文檔案模組;檔案模組在執行時動態載入,需要完整的路徑分析、檔案定位、編譯執行過程,速度比核心模組慢。

二、模組規範(commonjs)

模組的引用 var http = require('math');

在commonjs中存在require()方法,這個方法接受模組標識,以此引入乙個模組的api到當前的上下文中。

模組定義用exports物件匯出當前模組的方法或者變數,並且它是唯一匯出的出口。在模組中,還存在module物件,代表模組本身,而exports是module的屬性。在node中,乙個檔案就是乙個模組,將方法掛載在exports物件上作為屬性即可定義匯出的方式。 

//

math.js

exports.add = function

()

return

sum }//

program.js

var math = require('math');//

引入自定義模組(math.js)

exports.increment = function

(val);

3.模組標識

模組標識就是傳遞給require()方法的引數,它必須是符合小駝峰命名的字串,或者以. 、..開頭的相對路徑,或者絕對路徑,可以沒有字尾名.js

三、 node模組實現

實現三步驟

1.路徑分析

通過識別符號進行模組查詢,分幾類

核心模組,如http,fs,path等。

.或..開始的相對路徑檔案模組。

以/開始的絕對路徑檔案模組

非路徑形式的檔案模組,如自定義的connect模組。

載入方式和優先順序

2.檔案定位

注意:從快取載入的優化策略使得二次引入是不需要路徑分析、檔案定位、編譯執行的過程,大大提高了再次載入模組時的效率。

在檔案定位的過程中,還要注意一些細節,包括副檔名的分析、目錄和包的處理。

目錄分析和包

3.編譯執行

每個檔案模組都是乙個物件,定位到具體檔案後,node就會新建乙個模組物件,然後根據路徑載入並編譯。對於不同的副檔名,載入方法不同

每個編譯成功的模組都會將其檔案路勁作為索引快取在module._cache物件上,以提高二次引入的效能。

Node模組 學習筆記(二)

node的模組分為三大類 全域性模組 系統模組 自定義模組 demo示例 1.js console.log process.env if process.env.dev else console.log dirname 常用的系統模組 demo示例 1 path模組的示例 2.js let path...

node學習筆記 模組載入

學習筆記過程,自己理解,方便自己查詢,新手一枚,希望批評指正。通過命令列引數傳遞給nodejs以啟動程式的模組被稱為主模組。主模組負責排程組成整個程式的其它模組完成工作。用過require.js,應該知道這個概念。1.新建乙個名為1.js的檔案 function hello exports.hell...

node學習之 path模組

const path require path 引入path模組 let str root welcome index.html 定義乙個路徑 console.log path.basename str index.html console.log path.extname str html 字尾名...