溫馨提示×

溫馨提示×

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

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

Nodejs中怎么自定義CommonJS模塊

發(fā)布時間:2022-08-08 14:34:34 來源:億速云 閱讀:120 作者:iii 欄目:web開發(fā)

這篇文章主要介紹了Nodejs中怎么自定義CommonJS模塊的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Nodejs中怎么自定義CommonJS模塊文章都會有所收獲,下面我們一起來看看吧。

一、 什么是 CommonJs?

JavaScript 是一個強大面向對象語言,它有很多快速高效的解釋器。 然而, JavaScript標準定義的 API 是為了構建基于瀏覽器的應用程序。并沒有制定一個用于更廣泛的應用程序的標準庫。 CommonJS 規(guī)范的提出,主要是為了彌補當前 JavaScript 沒有標準的缺陷。 它的終極目標就是: 提供一個類似 Python, Ruby 和 Java 語言的標準庫,而不只是停留在小腳本程序的階段。用 CommonJS API 編寫出的應用, 不僅可以利用 JavaScript 開發(fā)客戶端應用, 而且還可以編寫以下應用。

  • 服務器端 JavaScript 應用程序。( nodejs)

  • 命令行工具。

  • 桌面圖形界面應用程序。

CommonJS 就是模塊化的標準, nodejs 就是 CommonJS( 模塊化) 的實現(xiàn)。

二、 Nodejs 中的模塊化

Node 應用由模塊組成,采用 CommonJS 模塊規(guī)范。

2.1 在 Node 中,模塊分為兩類:

一類是 Node 提供的模塊,稱為核心模塊;另一類是用戶編寫的模塊,稱為文件模塊。

  • 核心模塊部分在 Node 源代碼的編譯過程中,編譯進了二進制執(zhí)行文件。在 Node 進程啟動時,部分核心模塊就被直接加載進內存中,所以這部分核心模塊引入時,文件定位和編譯執(zhí)行這兩個步驟可以省略掉,并且在路徑分析中優(yōu)先判斷,所以它的加載速度是最快的。如: HTTP 模塊 、 URL 模塊、 Fs 模塊都是 nodejs 內置的核心模塊,可以直接引入使用。

  • 文件模塊則是在運行時動態(tài)加載,需要完整的路徑分析、文件定位、編譯執(zhí)行過程、速度相比核心模塊稍微慢一些,但是用的非常多。 這些模塊需要我們自己定義。 接下來我們看一下 nodejs 中的自定義模塊。

2.2 CommonJS( Nodejs) 中自定義模塊的規(guī)定:

  • 1.我們可以把公共的功能抽離成為一個單獨的 js 文件作為一個模塊, 默認情況下面這個模塊里面的方法或者屬性, 外面是沒法訪問的。如果要讓外部可以訪問模塊里面的方法或者屬性, 就必須在模塊里面通過 exports 或者 module.exports 暴露屬性或者方法。

  • 2. 在需要使用這些模塊的文件中, 通過 require 的方式引入這個模塊。這個時候就可以使用模塊里面暴露的屬性和方法。

Nodejs中怎么自定義CommonJS模塊

2.3 定義使用模塊:

// 定義一個 tools.js 的模塊
//模塊定義
var tools = {
sayHello: function() {
return 'hello NodeJS';
},
add: function(x, y) {
return x + y;
}
};
// 模塊接口的暴露
// module.exports = tools;
exports.sayHello = tools.sayHello;
exports.add = tools.add;
1
2
3
4
var http = require('http');
// 引入自定義的 tools.js 模塊
var tools= require('./tools');
tools.sayHello(); //使用模塊

三、 npm init 生成 package.json

npm init --yes

關于“Nodejs中怎么自定義CommonJS模塊”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Nodejs中怎么自定義CommonJS模塊”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

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

AI