node.js中的模塊化標準CommonJS與自定義模塊
一、 什么是 CommonJs?
JavaScript 是一個強大面向?qū)ο笳Z言,它有很多快速高效的解釋器。 然而, JavaScript標準定義的 API 是為了構(gòu)建基于瀏覽器的應用程序。并沒有制定一個用于更廣泛的應用程序的標準庫。 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 進程啟動時,部分核心模塊就被直接加載進內(nèi)存中,所以這部分核心模塊引入時,文件定位和編譯執(zhí)行這兩個步驟可以省略掉,并且在路徑分析中優(yōu)先判斷,所以它的加載速度是最快的。如: HTTP 模塊 、 URL 模塊、 Fs 模塊都是 nodejs 內(nèi)置的核心模塊,可以直接引入使用。
- 文件模塊則是在運行時動態(tài)加載,需要完整的路徑分析、文件定位、編譯執(zhí)行過程、速度相比核心模塊稍微慢一些,但是用的非常多。 這些模塊需要我們自己定義。 接下來我們看一下 nodejs 中的自定義模塊。
2.2 CommonJS( Nodejs) 中自定義模塊的規(guī)定:
- 1.我們可以把公共的功能抽離成為一個單獨的 js 文件作為一個模塊, 默認情況下面這個模塊里面的方法或者屬性, 外面是沒法訪問的。如果要讓外部可以訪問模塊里面的方法或者屬性, 就必須在模塊里面通過 exports 或者 module.exports 暴露屬性或者方法。
- 2. 在需要使用這些模塊的文件中, 通過 require 的方式引入這個模塊。這個時候就可以使用模塊里面暴露的屬性和方法。
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
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
pnpm workspace管理monorepo項目使用過程詳解
這篇文章主要為大家介紹了pnpm workspace管理monorepo項目使用過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10使用nodejs+express實現(xiàn)簡單的文件上傳功能
這篇文章主要介紹了使用nodejs+express完成簡單的文件上傳功能,需要的朋友可以參考下2017-12-12Bun入門學習教程吊打Node或Deno的現(xiàn)代JS運行時
這篇文章主要為大家介紹了一款吊打Node或Deno的現(xiàn)代JS運行時,Bun入門學習教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07