轉載請注明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。
原文參考:https://dzone.com/articles/node-dependency-management-part2
在上篇介紹Node.js依賴關系管理的文章中,我們介紹了關於Node.js模塊的基礎知識,如何使用module.exports和require方法處理依賴項,以及文件夾依賴項(folder dependencies)的工作方式和工作原理。
今天我們將繼續從這一點出發,來了解如何使用這個系統模塊將應用程序分解成多個模塊,以及這樣做的優勢和Node.js的工作原理。
本文內容中提及到了上篇中一些經驗分享,在閱讀本文之前可以閱讀上篇詳細了解。
在我們繼正式開始了解學習如何使用多個模塊設置應用程序之前,我們一起來了解Node.js模塊一些其他方面的有趣內容。
Node Modules是單例模式嗎
在上一篇文章中,我們討論了Node.js一次只會加載一個模塊。如果發出請求,Node.js會給出該模塊的緩存副本。因此看起來這些模塊的行為就像獨生子女。這里我們看一個例子,來說明這種情況。
首先,我們為應用程序創建了一個項目,初始化應用程序,並創建了一個文件user.js,如下所示:
接着,在APP.JS中我們會使用用戶模塊(user module),並按照如下方式使用:
可以看到我們創建兩了兩個用戶,只要對其中一個變量做出修改就會影響另一個變量的內容。我們必須意識到用戶模塊會被緩存,並在進行另一個請求的時間內被重用。
接下來我們把它改成一個構造函數,看看他如何進行工作
構造函數
我們在上篇內容中介紹了構造函數,實現了user.js的更改:
這一部分內容下面要繼續在app.js中使用:
我們可以看到兩個不同的例子,並且可以直觀感受到這之間的不同。不用太擔心不同的問題,后文中將會介紹其他例子和解決方案。
現在我們開始介紹關於我們本次的主題,關於如何使用模塊管理應用程序。
應用程序構建
我們開始搭建一個簡單的應用程序基礎,接下來會在講解的過程中不斷對它進行細化。
我們已經創建了一些新的文件夾,現在程序中包含的結構如下:
首先我們給不同的模塊創建了單獨的文件夾。現在已經有的圖書管理文件夾,另一個用於日志記錄器文件夾,類似於用戶管理。這樣我們的每個模塊都有重點,易於定位和管理。同時在每個文件夾內都有子文件夾。這里我們需要注意文件夾級別的index.js文件,它將作為模塊的API。
然后在app.js中我們可以通過require引用模塊,看到它按照預期工作的工程。注意我們如何通過require user.js來引用它。
現在我們來更新代碼內容:
我們在圖書管理模塊下創建了幾個項目,在這這模塊中我們可以看到book.js遵循常見JavaScript構造函數模式(但與user.js中看到的構造函數示例略有不同)。
在相應的index.js文件中有以下代碼:
index.js作為模塊的API,讓我們在app.js中使用它,如下所示:
將user.js改為與book.js相同的構造函數模式后我們的程序正按照預期工作。這里提示一點,我們可以使用Node.js中其他語言的現有JavaScript內容進行編寫。根據自己的偏好進行選擇就可以。
下面是代碼user.js重構之后的樣子:
總結
本文中介紹的應用程序內容都十分基礎,我們通過學習Node.js依賴性管理的一些基礎知識和一些建立項目結構的常用方法來進行了文件模塊管理。
我們還看到Node.js應用程序中使用JavaScript設計模式的相關知識,並且也通過一些簡單的例子進行說明。
了解了Node.js的依賴關系,那你知道在web系統中,讀取文件的極限速度究竟能有多快?而我們在項目中如何對表格性能進行優化?2020中國.net開發者大會講師的分享,你一定不想錯過:Web系統開發中的表格性能優化實踐。