13個Node.js庫為你的專案提供支援

13個Node.js庫為你的專案提供支援

Node.js已經成為許多從事網路應用的開發者的首選執行環境。Node.js是為執行用世界上最流行的程式語言之一的JavaScript編寫的程式碼而構建的,它使大量的開發者社羣能夠構建伺服器端應用程式。

Node.js通過JavaScript庫支援程式碼重用性,但選擇最好的庫可能是令人生畏的。有用的庫可以加速開發時間,並對你的網路應用有廣泛的好處,包括更快的載入時間和減少應用包的大小。

在選擇一個庫時,你要考慮應用程式的複雜性、庫背後的社羣、更新的頻率,以及它的文件質量。

Node.js中的庫是使用Node.js包管理器npm管理的,它可以幫助安裝許多開源庫。我們已經確定了13個Node.js的基本庫,這些庫使網路開發者的生活更加輕鬆。

  1. 什麼是Node.js?
  2. 什麼是Node.js庫?
  3. 主流Node.js庫

什麼是Node.js?

Node.js是一個開源的、用於JavaScript程式碼的伺服器端執行環境。它有一個非同步架構和跨平臺相容性,使其成為網路開發的流行基礎。

Node.js使用事件驅動和非阻塞式I/O,這使得它在處理大量資料的實時分散式應用中非常高效。

什麼是Node.js庫?

庫,或模組,是預先寫好的程式碼,抽象出常用的任務。你可以使用庫來加快編碼過程,促進程式碼的可重用性,幫助保持你的工作 “DRY”(不要重複自己)。

與框架相比,庫包含完整的功能,你可以在任何開發階段將其納入一個專案。另一方面,框架通常為整個應用程式提供一個骨架,通常對其構建方式有重大影響。

主流Node.js庫

讓我們看看這些Node.js庫中的13個,並探討它們的優勢。

  1. Sequelize
  2. CORS
  3. Nodemailer
  4. Passport
  5. Async
  6. Winston
  7. Mongoose
  8. Socket.IO
  9. Lodash
  10. Axios
  11. Puppeteer
  12. Multer
  13. Dotenv

1. Sequelize

Sequelize是一個基於承諾的Node.js物件關係對映器(ORM)工具,幫助開發者更容易地與關係型資料庫合作。它支援諸如PostgreSQLMySQLMariaDBSQLite等資料庫。

使用JavaScript物件,Sequelize對資料庫表的結構進行建模,並連線到所需的關聯式資料庫以查詢和轉換資料。然後它解析並將檢索到的資料作為一個JavaScript物件返回。

Sequelize logo

Sequelize logo

Sequelize庫的特點和優勢

  • 連線到資料庫並執行操作,無需編寫原始SQL查詢
  • 減少SQL隱碼攻擊漏洞和SQL隱碼攻擊
  • GraphQL相容

2. CORS

CORS是一個Node.js包,用於提供跨源資源共享(CORS),作為借鑑Connect/Express的中介軟體。

CORS包在Node.js路由中介軟體周圍形成一個封裝,使應用程式能夠訪問來自其自身以外的域的資源。它吸收了多個引數來配置跨源選項,包括原點、標頭檔案等。

CORS程式碼(配置)的一個例子

CORS程式碼(配置)的一個例子

CORS庫的特點和優勢

  • 減少了在網路應用中啟用CORS所需的程式碼量
  • 允許你配置允許列出的域,讓使用者為選定的來源啟用 CORS,同時阻止其他來源
  • 提供無縫的錯誤處理,幫助開發人員分析來自可疑來源的安全威脅。

3. Nodemailer

Nodemailer使從Node.js伺服器傳送電子郵件更加容易。它使用一個依賴於簡單郵件傳輸協議(SMTP)的傳輸物件,以及其他支援的傳輸方式。這個傳輸物件將 fromtosubjectbody和其他引數作為輸入來構建一個訊息。

Nodemailer的標誌

Nodemailer的標誌

Nodemailer庫的特點和優點

  • 一個支援多種傳輸方式的單一模組,包括SMTP、亞馬遜簡單郵件服務(SES)、Sendmail和流。
  • 支援文字和HTML內容作為電子郵件的主體
  • 配置遞送狀態通知,並支援批量郵件遞送

4. Passport

Passport是一個用於Node.js的模組化認證中介軟體。Passport具有500多種認證策略,包括谷歌、Facebook、Twitter以及其他定製和單點登入(SSO)供應商。策略包括正常的使用者名稱和密碼認證,使用OAuth的社交媒體網站的委託認證,以及用於聯合認證的OpenID

Passport logo

Passport logo

Passport庫的特點和優點

  • 用最少的程式碼為社交媒體網站內建SSO認證
  • 在多個會話中配置持久的登入資訊
  • 通過使用Express和Connect中介軟體的無障礙配置,避免了在應用程式中安裝新的路由

5. Async

Async是一個強大的Node.js工具模組,它通過與JavaScript “async” 或回撥接受函式合作,幫助開發者處理非同步JavaScript。如果你向Async模組傳遞一個回撥陣列,它就會執行幷包裝這些回撥以返回一個承諾。

Async的標誌

Async的標誌

Async庫的特點和優點

  • 提供了大約70個實用函式,可以輕鬆地開發非同步控制流
  • 提供 “parallel” 函式,用於處理對主機的多個請求(否則需要大量的程式碼來實現)。
  • 有助於消除JavaScript中巢狀的 “callback Hell”。

6. Winston

Winston是一個Node.js日誌庫,支援多種傳輸的通用日誌。這些運輸工具根據你的應用程式的需求來儲存和配置日誌。

除了預設的, createLogger 函式可以幫助你建立自定義的日誌器,使用可用的傳輸選項,如控制檯、檔案和資料庫。自定義日誌器也可以與自定義傳輸器一起使用。

一個Winston程式碼示例

一個Winston程式碼示例

Winston庫的特點和優點

  • 通過單一的配置檔案集中控制日誌記錄
  • 允許可定製的日誌格式,如以JSON格式或文字形式儲存日誌時
  • 提供可定製的日誌級別,你可以根據你的應用需求進行配置

7. Mongoose

Mongoose是一個基於Node.js的MongoDB物件建模工具,也被稱為物件資料建模(ODM)庫,它提供了各種功能,如掛鉤、模型驗證、連線和查詢。

Mongoose為應用資料提供了一個基於模式的解決方案,在應用層強制執行一個單一的模式,在MongoDB中形成一個集合。每個模式都與Mongoose模型相關聯,它允許你對MongoDB集合執行查詢,比如獲取、更新和刪除資料。

Mongoose的標誌

Mongoose的標誌

Mongoose庫的特點和優點

  • 提供輕鬆的查詢抽象,允許開發人員為MongoDB事務編寫更少的程式碼
  • 內建資料驗證,用於定義什麼樣的資料可以在資料庫中被新增或更新的規則
  • 為MongoDB集合實施預定義結構,為開發者提供一個模板式的MongoDB例項
  • 允許查詢鏈,以處理多個查詢

8. Socket.IO

Socket.IO是一個Node.js通訊庫,在客戶端瀏覽器和伺服器之間建立實時、雙向、基於事件的通訊。

它使用Engine.IO在伺服器和客戶端之間建立一個底層連線,通過HTTP長輪詢使用數字握手。一旦它建立了連線,客戶端和伺服器的通訊就通過TCP實時進行。

Sockets.IO的標誌

Sockets.IO的標誌

Sockets.IO庫的特點和優點

  • 使用WebSocket提供了一個低開銷的通訊渠道,並允許將HTTP長輪詢作為一個後備選項
  • 可擴充套件,允許伺服器輕鬆向多個客戶端廣播事件
  • 支援通過名稱空間進行復用,從而最大限度地減少使用的TCP連線數,並減少伺服器上的套接字埠

9. Lodash

Lodash是一個實用程式庫,可以幫助開發者編寫簡明和可維護的JavaScript程式碼。它有200多個實用功能來簡化日常程式設計任務,包括型別檢查、簡單的數學運算等等。

Lodash的標誌

Lodash的標誌

Lodash庫的特點和優點

  • 在polyfills的幫助下,保持了跨瀏覽器的相容性
  • 在處理物件的陣列時提供內建的解決方案,實現 filterfind, 和 flatMap等操作
  • 幫助開發者避免重複,並幫助他們保持乾淨的程式碼

10. Axios

Axios是一個基於承諾的HTTP客戶端,用於瀏覽器和Node.js。它還根據需要處理來自瀏覽器或Node.js的請求和響應資料的轉換。

Axios是同構的,這意味著它可以用相同的程式碼庫在伺服器和客戶端執行。對於HTTP通訊,Axios在伺服器端使用本地HTTP模組,在客戶端使用XMLHttpRequest。

Axios的標誌

Axios的標誌

Axios庫的特點和優勢

  • 為 GETPUTPOST, 和 DELETE 等常見的HTTP資料型別提供內建的API函式
  • 在網際網路上進行HTTP請求時,通過跨站請求偽造(CSRF)保護提供更多的安全性
  • 通過自動JSON資料轉換,輕鬆地將響應資料轉換為JSON。

11. Puppeteer

Puppeteer是一個Node.js庫,通過DevTools協議提供一個高階API來控制Chrome/Chromium,從而實現Chrome的自動化。它可以自動進行前端測試,包括請求處理測試、定位和比較UI元素、效能測試等。

開發人員可以將Puppeteer包匯入他們的程式碼中,建立一個Chromium例項。然後,該例項可以通過與瀏覽器引擎進行通訊來實現自動化測試。

Puppeteer的標誌

Puppeteer的標誌

Puppeteer庫的特點和優點

  • 零設定,易於配置,不需要額外的驅動程式
  • 抓取網站以生成預渲染的內容
  • 與Jest和Mocha等流行的測試框架相容

12. Multer

Multer是一個用於Node.js的中介軟體庫。它寫在HTML表單解析器busboy之上,處理多部分和多形式資料。

在初始化Multer例項後,它接收了一個 dest 物件作為其選項之一,以指定上傳的檔案將被儲存在伺服器上。Multer與上傳請求一起傳送一個 file 物件,然後由Multer API解析併傳送至目標位置。

一個帶有HTML表單標記的Multer程式碼的例子

一個帶有HTML表單標記的Multer程式碼的例子

Multer庫的特點和優點

  • 通過內建解析,使原始的HTTP請求資料更容易被儲存。
  • 讓你指定檔案的編碼型別,這為上傳的檔案增加了一層安全性
  • 過濾並可以限制檔案型別和大小的上傳選項

13. Dotenv

Dotenv是一個Node.js實用程式庫,用於管理應用程式中的環境變數,並保護敏感的配置變數。Dotenv還幫助應用程式在儲存環境變數時遵循twelve-factor應用方法。早期配置Dotenv庫會自動將環境變數從.env注入到provess.env

Dotenv的標誌

Dotenv的標誌

Dotenv庫的特點和優點

  • 幫助你將祕密–如API金鑰和登入憑證–從原始碼中分離出來,並讓每個開發人員建立一個.env檔案供他們自己使用
  • 由於其零依賴模組,不會對應用程式的大小產生影響

小結

Node.js有大量有用的庫,但為你的專案選擇一個最好的庫可能很困難。我們在這裡介紹的一些Node.js庫可能是你下一個應用程式的 “必備品”。

例如,如果你主要與MongoDB一起工作,使用Mongoose可以是一個救星。CORS可以幫助你從多個域傳遞內容,如果你需要在團隊中分享程式碼–但不是祕密–Dotenv就會非常方便。

評論留言