使用Koa.js,離不開這十個中間件

koa_2.png

隨著ES6的普及,async/await的語法受到更多JS開發(fā)者的青睞,Koa.js作為比較早支持使用該語法的Node框架越來越受到大家的喜愛,雖然Koa.js本身支持的功能很有限,但官方和社區(qū)提供了很多各種功能的中間件,本文精選了其中的十個,對于我們開發(fā)應(yīng)用程序或者框架將會特別有用。

No.1 koa-router

路由是Web框架必不可少的基礎(chǔ)功能,koa.js為了保持自身的精簡,并沒有像Express.js自帶了路由功能,因此koa-router做了很好的補充,作為koa星數(shù)最多的中間件,koa-router提供了全面的路由功能,比如類似Express的app.get/post/put的寫法,URL命名參數(shù)、路由命名、支持加載多個中間件、嵌套路由等。其他可選路由中間件:koa-route, koa-joi-router, koa-trie-router

No.2 koa-bodyparser

koa.js并沒有內(nèi)置Request Body的解析器,當我們需要解析請求體時需要加載額外的中間件,官方提供的koa-bodyparser是個很不錯的選擇,支持x-www-form-urlencoded, application/json等格式的請求體,但不支持form-data的請求體,需要借助 formidable 這個庫,也可以直接使用 koa-bodykoa-better-body

No.3 koa-views

koa-views對需要進行視圖模板渲染的應(yīng)用是個不可缺少的中間件,支持ejs, nunjucks等眾多模板引擎。

No.4 koa-static

Node.js除了處理動態(tài)請求,也可以用作類似Nginx的靜態(tài)文件服務(wù),在本地開發(fā)時特別方便,可用于加載前端文件或后端Fake數(shù)據(jù),可結(jié)合 koa-compresskoa-mount 使用。

No.5 koa-session

HTTP是無狀態(tài)協(xié)議,為了保持用戶狀態(tài),我們一般使用Session會話,koa-session提供了這樣的功能,既支持將會話信息存儲在本地Cookie,也支持存儲在如Redis, MongoDB這樣的外部存儲設(shè)備。

No.6 koa-jwt

隨著網(wǎng)站前后端分離方案的流行,越來越多的網(wǎng)站從Session Base轉(zhuǎn)為使用Token Base,JWT(Json Web Tokens)作為一個開放的標準被很多網(wǎng)站采用,koa-jwt這個中間件使用JWT認證HTTP請求。

No.7 koa-helmet

網(wǎng)絡(luò)安全得到越來越多的重視,helmet 通過增加如Strict-Transport-Security, X-Frame-Options, X-Frame-Options等HTTP頭提高Express應(yīng)用程序的安全性,koa-helmet為koa程序提供了類似的功能,參考Node.js安全清單

No.8 koa-compress

當響應(yīng)體比較大時,我們一般會啟用類似Gzip的壓縮技術(shù)減少傳輸內(nèi)容,koa-compress提供了這樣的功能,可根據(jù)需要進行靈活的配置。

No.9 koa-logger

koa-logger提供了輸出請求日志的功能,包括請求的url、狀態(tài)碼、響應(yīng)時間、響應(yīng)體大小等信息,對于調(diào)試和跟蹤應(yīng)用程序特別有幫助,koa-bunyan-logger 提供了更豐富的功能。

No.10 koa-convert

對于比較老的使用Generate函數(shù)的koa中間件(< koa2),官方提供了一個靈活的工具可以將他們轉(zhuǎn)為基于Promise的中間件供Koa2使用,同樣也可以將新的基于Promise的中間件轉(zhuǎn)為舊式的Generate中間件。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容