詳解Node.js中的模塊化方法

一、模塊化的基本概念

1、什麼是模塊化

模塊化是指解決一個復雜問題時,自頂向下逐層把系統劃分成若幹模塊的過程。對於整個系統來說,模塊是可組合、分解和更換的單元。

編程領域中的模塊化

就是遵守固定的規則,把一個大文件拆成獨立並互相依賴的多個小模塊。 把代碼進行模塊化拆分的好處:

  • 提高瞭代碼的復用性
  • 提高瞭代碼的可維護性
  • 可以實現按需加載

2、模塊化規范

模塊化規范就是對代碼進行模塊化的拆分與組合時,需要遵守的那些規則。

例如:

  • 使用什麼樣的語法格式來引用模塊
  • 在模塊中使用什麼樣的語法格式向外暴露成員

模塊化規范的好處

大傢都遵守同樣的模塊化規范寫代碼,降低瞭溝通的成本,極大方便瞭各個模塊之間的相互調用,利人利己。

二、Node.js 中的模塊化

1、Node.js 中的模塊化分類

Node.js 中根據模塊來源的不同,將模塊分為瞭 3 大類,分別是:

內置模塊(內置模塊是由 Node.js 官方提供的,例如 fs、path、http 等)  

自定義模塊(用戶創建的每個 .js 文件,都是自定義模塊)  

第三方模塊(由第三方開發出來的模塊,並非官方提供的內置模塊,也不是用戶創建的自定義模塊,使用前需要先下載)

2、加載模塊

使用 require() 方法,可以加載需要的內置模塊、用戶自定義模塊、第三方模塊進行使用。

// 1、加載內置fs模塊
const fs = require('fs')
//2、加載自定義模塊
const tre = require('./tre.js')
//3、加載第三方模塊
const moment=require('moment')

3、向外共享模塊作用域中的成員

module.exports 對象:

在每個 .js 自定義模塊中都有一個 module 對象,它裡面存儲瞭和當前模塊有關的信息。

在自定義模塊中,可以使用 module.exports 對象,將模塊內的成員共享出去,供外界使用。

外界用 require() 方法導入自定義模塊時,得到的就是 module.exports 所指向的對象。

4、Node.js 中的模塊化規范

(1)什麼是CommonJS模塊規范

  • CommonJS 是一套代碼規范, 目的是為瞭構建 JavaScript 在瀏覽器之外的生態系統 (服務器端, 桌面端).
  • 通過該規范使JavaScript具備開發復雜應用、跨平臺的能力

Node.js 遵循瞭 CommonJS 模塊化規范,CommonJS 規定瞭模塊的特性和各模塊之間如何相互依賴。

(2)CommonJS 模塊化規范

CommonJS模塊規范化的內容
導出模塊: moudle.exports 導出模塊
導入模塊: require('模塊名稱')

CommonJS 規定:

1.每個模塊內部,module 變量代表當前模塊。

2.module 變量是一個對象,它的 exports 屬性(即 module.exports)是對外的接口。

3.加載某個模塊,其實是加載該模塊的 module.exports 屬性。require() 方法用於加載模塊。

(3)每個導出的模塊都有一個moudle對象,該對象包含的屬性有:

moudle.exports 表示當前模塊對外輸出的接口,其他模塊引用的是moudle.exports導出的變量
exports變量 指向moudle.exports,為瞭操作的方便,它不能直接指向一個值

(4)使用require導入模塊:導入並執行一個JavaScript文件,返回的是一個exports對象,若沒有找到相應的對象就報錯    

  • 模塊輸出是一個函數,則該函數的輸出接口不能用exports變量來導出必須用戶moudle.exports導出
  • 加載規則:

A、用來加載js文件,默認的文件擴展名為.js

B、根據參數的不同格式,去不同路徑下查找相應的js文件

'./(../)':表示加載路徑是相對路徑              

'/':表示加載路徑是絕對路徑              

既不是'./(../)'也不是'/':表示加載的模式是node的核心模塊,在node安裝路徑的node_modules中              

  • require的內部處理的流程

require –>module.exports–>moudle._load 

三、npm 與 包

1、包的概念

什麼是包?

Node.js 中的第三方模塊又叫做包。 就像電腦和計算機指的是相同的東西,第三方模塊和包指的是同一個概念,隻不過叫法不同。

包的來源?

不同於 Node.js 中的內置模塊與自定義模塊,包是由第三方個人或團隊開發出來的,免費供所有人使用。 註意:Node.js 中的包都是免費且開源的,不需要付費即可免費下載使用。

為什麼需要包?

由於 Node.js 的內置模塊僅提供瞭一些底層的 API,導致在基於內置模塊進行項目開發的時,效率很低。 包是基於內置模塊封裝出來的,提供瞭更高級、更方便的 API,極大的提高瞭開發效率。 包和內置模塊之間的關系,類似於 jQuery 和 瀏覽器內置 API 之間的關系。

2、包的安裝與卸載

npm 包的安裝——

npm install 包的完整名稱

npm 包的卸載——

npm uninstall 包的完整名稱

安裝指定保本的包——

默認情況下,使用 npm install 命令安裝包的時候,會自動安裝最新版本的包。如果需要安裝指定版本的包,可以在包名之後,通過 @ 符號指定具體的版本,例如

npm install [email protected]

3、包管理配置文件

npm 規定,在項目根目錄中,必須提供一個叫做 package.json 的包管理配置文件。用來記錄與項目有關的一些配置信息。例如:

  • 項目的名稱、版本號、描述等
  • 項目中都用到瞭哪些包
  • 哪些包隻在開發期間會用到
  • 哪些包在開發和部署時都需要用到

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: