Node.js已經成為許多從事網路應用的開發者的首選執行環境。Node.js是為執行用世界上最流行的程式語言之一的JavaScript編寫的程式碼而構建的,它使大量的開發者社羣能夠構建伺服器端應用程式。
Node.js通過JavaScript庫支援程式碼重用性,但選擇最好的庫可能是令人生畏的。有用的庫可以加速開發時間,並對你的網路應用有廣泛的好處,包括更快的載入時間和減少應用包的大小。
在選擇一個庫時,你要考慮應用程式的複雜性、庫背後的社羣、更新的頻率,以及它的文件質量。
Node.js中的庫是使用Node.js包管理器npm管理的,它可以幫助安裝許多開源庫。我們已經確定了13個Node.js的基本庫,這些庫使網路開發者的生活更加輕鬆。
什麼是Node.js?
Node.js是一個開源的、用於JavaScript程式碼的伺服器端執行環境。它有一個非同步架構和跨平臺相容性,使其成為網路開發的流行基礎。
Node.js使用事件驅動和非阻塞式I/O,這使得它在處理大量資料的實時分散式應用中非常高效。
什麼是Node.js庫?
庫,或模組,是預先寫好的程式碼,抽象出常用的任務。你可以使用庫來加快編碼過程,促進程式碼的可重用性,幫助保持你的工作 “DRY”(不要重複自己)。
與框架相比,庫包含完整的功能,你可以在任何開發階段將其納入一個專案。另一方面,框架通常為整個應用程式提供一個骨架,通常對其構建方式有重大影響。
主流Node.js庫
讓我們看看這些Node.js庫中的13個,並探討它們的優勢。
- Sequelize
- CORS
- Nodemailer
- Passport
- Async
- Winston
- Mongoose
- Socket.IO
- Lodash
- Axios
- Puppeteer
- Multer
- Dotenv
1. Sequelize
Sequelize是一個基於承諾的Node.js物件關係對映器(ORM)工具,幫助開發者更容易地與關係型資料庫合作。它支援諸如PostgreSQL、MySQL、MariaDB、SQLite等資料庫。
使用JavaScript物件,Sequelize對資料庫表的結構進行建模,並連線到所需的關聯式資料庫以查詢和轉換資料。然後它解析並將檢索到的資料作為一個JavaScript物件返回。
Sequelize logo
Sequelize庫的特點和優勢
- 連線到資料庫並執行操作,無需編寫原始SQL查詢
- 減少SQL隱碼攻擊漏洞和SQL隱碼攻擊
- 與GraphQL相容
2. CORS
CORS是一個Node.js包,用於提供跨源資源共享(CORS),作為借鑑Connect/Express的中介軟體。
CORS包在Node.js路由中介軟體周圍形成一個封裝,使應用程式能夠訪問來自其自身以外的域的資源。它吸收了多個引數來配置跨源選項,包括原點、標頭檔案等。
CORS程式碼(配置)的一個例子
CORS庫的特點和優勢
- 減少了在網路應用中啟用CORS所需的程式碼量
- 允許你配置允許列出的域,讓使用者為選定的來源啟用 CORS,同時阻止其他來源
- 提供無縫的錯誤處理,幫助開發人員分析來自可疑來源的安全威脅。
3. Nodemailer
Nodemailer使從Node.js伺服器傳送電子郵件更加容易。它使用一個依賴於簡單郵件傳輸協議(SMTP)的傳輸物件,以及其他支援的傳輸方式。這個傳輸物件將 from
, to
, subject
, body
和其他引數作為輸入來構建一個訊息。
Nodemailer的標誌
Nodemailer庫的特點和優點
- 一個支援多種傳輸方式的單一模組,包括SMTP、亞馬遜簡單郵件服務(SES)、Sendmail和流。
- 支援文字和HTML內容作為電子郵件的主體
- 配置遞送狀態通知,並支援批量郵件遞送
4. Passport
Passport是一個用於Node.js的模組化認證中介軟體。Passport具有500多種認證策略,包括谷歌、Facebook、Twitter以及其他定製和單點登入(SSO)供應商。策略包括正常的使用者名稱和密碼認證,使用OAuth的社交媒體網站的委託認證,以及用於聯合認證的OpenID。
Passport logo
Passport庫的特點和優點
- 用最少的程式碼為社交媒體網站內建SSO認證
- 在多個會話中配置持久的登入資訊
- 通過使用Express和Connect中介軟體的無障礙配置,避免了在應用程式中安裝新的路由
5. Async
Async是一個強大的Node.js工具模組,它通過與JavaScript “async” 或回撥接受函式合作,幫助開發者處理非同步JavaScript。如果你向Async模組傳遞一個回撥陣列,它就會執行幷包裝這些回撥以返回一個承諾。
Async的標誌
Async庫的特點和優點
- 提供了大約70個實用函式,可以輕鬆地開發非同步控制流
- 提供 “parallel” 函式,用於處理對主機的多個請求(否則需要大量的程式碼來實現)。
- 有助於消除JavaScript中巢狀的 “callback Hell”。
6. Winston
Winston是一個Node.js日誌庫,支援多種傳輸的通用日誌。這些運輸工具根據你的應用程式的需求來儲存和配置日誌。
除了預設的, createLogger
函式可以幫助你建立自定義的日誌器,使用可用的傳輸選項,如控制檯、檔案和資料庫。自定義日誌器也可以與自定義傳輸器一起使用。
一個Winston程式碼示例
Winston庫的特點和優點
- 通過單一的配置檔案集中控制日誌記錄
- 允許可定製的日誌格式,如以JSON格式或文字形式儲存日誌時
- 提供可定製的日誌級別,你可以根據你的應用需求進行配置
7. Mongoose
Mongoose是一個基於Node.js的MongoDB物件建模工具,也被稱為物件資料建模(ODM)庫,它提供了各種功能,如掛鉤、模型驗證、連線和查詢。
Mongoose為應用資料提供了一個基於模式的解決方案,在應用層強制執行一個單一的模式,在MongoDB中形成一個集合。每個模式都與Mongoose模型相關聯,它允許你對MongoDB集合執行查詢,比如獲取、更新和刪除資料。
Mongoose的標誌
Mongoose庫的特點和優點
- 提供輕鬆的查詢抽象,允許開發人員為MongoDB事務編寫更少的程式碼
- 內建資料驗證,用於定義什麼樣的資料可以在資料庫中被新增或更新的規則
- 為MongoDB集合實施預定義結構,為開發者提供一個模板式的MongoDB例項
- 允許查詢鏈,以處理多個查詢
8. Socket.IO
Socket.IO是一個Node.js通訊庫,在客戶端瀏覽器和伺服器之間建立實時、雙向、基於事件的通訊。
它使用Engine.IO在伺服器和客戶端之間建立一個底層連線,通過HTTP長輪詢使用數字握手。一旦它建立了連線,客戶端和伺服器的通訊就通過TCP實時進行。
Sockets.IO的標誌
Sockets.IO庫的特點和優點
- 使用WebSocket提供了一個低開銷的通訊渠道,並允許將HTTP長輪詢作為一個後備選項
- 可擴充套件,允許伺服器輕鬆向多個客戶端廣播事件
- 支援通過名稱空間進行復用,從而最大限度地減少使用的TCP連線數,並減少伺服器上的套接字埠
9. Lodash
Lodash是一個實用程式庫,可以幫助開發者編寫簡明和可維護的JavaScript程式碼。它有200多個實用功能來簡化日常程式設計任務,包括型別檢查、簡單的數學運算等等。
Lodash的標誌
Lodash庫的特點和優點
- 在polyfills的幫助下,保持了跨瀏覽器的相容性
- 在處理物件的陣列時提供內建的解決方案,實現
filter
,find
, 和flatMap
等操作 - 幫助開發者避免重複,並幫助他們保持乾淨的程式碼
10. Axios
Axios是一個基於承諾的HTTP客戶端,用於瀏覽器和Node.js。它還根據需要處理來自瀏覽器或Node.js的請求和響應資料的轉換。
Axios是同構的,這意味著它可以用相同的程式碼庫在伺服器和客戶端執行。對於HTTP通訊,Axios在伺服器端使用本地HTTP模組,在客戶端使用XMLHttpRequest。
Axios的標誌
Axios庫的特點和優勢
- 為
GET
,PUT
,POST
, 和DELETE
等常見的HTTP資料型別提供內建的API函式 - 在網際網路上進行HTTP請求時,通過跨站請求偽造(CSRF)保護提供更多的安全性
- 通過自動JSON資料轉換,輕鬆地將響應資料轉換為JSON。
11. Puppeteer
Puppeteer是一個Node.js庫,通過DevTools協議提供一個高階API來控制Chrome/Chromium,從而實現Chrome的自動化。它可以自動進行前端測試,包括請求處理測試、定位和比較UI元素、效能測試等。
開發人員可以將Puppeteer包匯入他們的程式碼中,建立一個Chromium例項。然後,該例項可以通過與瀏覽器引擎進行通訊來實現自動化測試。
Puppeteer的標誌
Puppeteer庫的特點和優點
- 零設定,易於配置,不需要額外的驅動程式
- 抓取網站以生成預渲染的內容
- 與Jest和Mocha等流行的測試框架相容
12. Multer
Multer是一個用於Node.js的中介軟體庫。它寫在HTML表單解析器busboy之上,處理多部分和多形式資料。
在初始化Multer例項後,它接收了一個 dest
物件作為其選項之一,以指定上傳的檔案將被儲存在伺服器上。Multer與上傳請求一起傳送一個 file
物件,然後由Multer API解析併傳送至目標位置。
一個帶有HTML表單標記的Multer程式碼的例子
Multer庫的特點和優點
- 通過內建解析,使原始的HTTP請求資料更容易被儲存。
- 讓你指定檔案的編碼型別,這為上傳的檔案增加了一層安全性
- 過濾並可以限制檔案型別和大小的上傳選項
13. Dotenv
Dotenv是一個Node.js實用程式庫,用於管理應用程式中的環境變數,並保護敏感的配置變數。Dotenv還幫助應用程式在儲存環境變數時遵循twelve-factor應用方法。早期配置Dotenv庫會自動將環境變數從.env注入到provess.env。
Dotenv的標誌
Dotenv庫的特點和優點
- 幫助你將祕密–如API金鑰和登入憑證–從原始碼中分離出來,並讓每個開發人員建立一個.env檔案供他們自己使用
- 由於其零依賴模組,不會對應用程式的大小產生影響
小結
Node.js有大量有用的庫,但為你的專案選擇一個最好的庫可能很困難。我們在這裡介紹的一些Node.js庫可能是你下一個應用程式的 “必備品”。
例如,如果你主要與MongoDB一起工作,使用Mongoose可以是一個救星。CORS可以幫助你從多個域傳遞內容,如果你需要在團隊中分享程式碼–但不是祕密–Dotenv就會非常方便。
評論留言