NodeJs 之模組系統

2021-10-02 01:21:03 字數 1909 閱讀 7885

隨著前端的發展,工程模組兒化已經是必不可少的一部分了,為了讓nodejs的檔案可以相互呼叫,nodejs提供了乙個簡單的模組系統;簡單點說:乙個nodejs檔案就是乙個模組兒 。

通過**來實踐認識一下,建立乙個模組兒,上邊我們說到乙個nodejs檔案就是乙個模組兒,那麼建立乙個模組兒其實就是建立乙個nodejs檔案,這裡我們建立乙個hello.js檔案,內容如下:

通過exports.變數匯出變數,變數可以是函式,建構函式,物件等。

// exports 匯出乙個函式

exports.

fun=

function()

接下來,如何使用這個模組兒? 我們建立乙個module.js來匯入一下,module.js內容如下

通過require(nodejs檔案路徑)來匯入這個模組兒

// require  hello.js

var hello =

require

('./hello');

//呼叫 hello.fun 函式

hello.

fun(

);

結果不言而喻,肯定是輸出:hello module, 在這裡module.js也是乙個模組兒,也可以被其它模組兒引用。

再來實踐乙個匯出物件模組兒,物件裡包含引數,函式等;同上的檔案,我們修改**:

這裡呢,我們稍微修改一點點匯出的模式,之前我們是通過exports.變數匯出,看起來並不是那麼靈活,因為只能匯出乙個物件或者函式等,為了更靈活,nodejs還有一種匯出方式module.exports =,如果是只匯出乙個物件的話,那麼就可以簡化為下邊這種寫法。

//  匯出乙個物件

const obj =

, func2:

function()

}module.exports = obj;

// 匯出物件本身

// module.exports = // 匯出物件包含obj物件本身,可以匯出多個物件

輸出結果

hello // 

hello.arg // 引數

hello.func // fun1

總結:如果要對外暴露屬性或方法,就用 exports 就行,要暴露物件(類似class,包含了很多屬性和方法),就用 module.exports。擴充套件nodejs 模組兒分為原生模組和檔案模組載入順序也是有一定規則的。

原生模組:http、fs、path等。

檔案模組:相對路徑,絕對路徑,非原生模組的檔案都屬於檔案模組

通過菜鳥教程的一張圖來了解一下模組的載入順序和機制

在這裡我就不舉例子來實踐模組的載入順序了,有興趣的同學可以自行實踐一下。

結論:1,不管什麼模組首先在檔案模組快取中查詢,找不到再檢視是不是原生模組兒

2,是原生模組,首先查詢原生模組快取(有則匯出),不是則查詢檔案模組

3,載入對應模組並新增快取

4,匯出

nodejs 模組系統

模組系統分為原生系統跟檔案系統,他們的呼叫優先順序為 檔案系統快取區 原生系統 原生系統快取區 檔案系統 1.原生系統 http,path,fs 等 2.載入檔案系統時還可以指定自定義檔案 hello 或者 root node hello 路徑載入 3.mod 非原生系統的檔案系統 node.js ...

nodejs中的模組系統

nodejs中的模組語法關鍵字主要是exports module.exports 以及 require,不要和es6的import export搞混了 匯出exports物件後直接新增新成員 exports.area r pi r 2 對module.exports直接複製 module.expor...

Nodejs中的模組系統

具有檔案作用域 具有通訊規則 載入和匯出規則 1.nodejs中的模組系統,具有檔案作用域,也具有通訊規則,使用require方法載入模組,使用exports介面物件匯出模組中的成員 2.載入require 語法 var 自定義變數名稱 require 模組 兩個作用 執行被載入模組中的 得到載入模...