摘要:使用承諾和異步功能來擺脫回調(diào)地獄的應(yīng)用程序,并簡化錯誤處理。它暴露了自己的和對象,而不是的和對象。因此,可被視為的模塊的抽象,其中是的應(yīng)用程序框架。這使得中間件對于整個堆棧而言不僅僅是最終應(yīng)用程序代碼,而且更易于書寫,并更不容易出錯。
Koa 與 Express
此系列文章的應(yīng)用示例已發(fā)布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進(jìn)或 Star 關(guān)注更新. 歡迎 Star.
在理念上,Koa 旨在 “修復(fù)和替換節(jié)點”,而 Express 旨在 “增加節(jié)點”。
Koa 使用承諾和異步功能來擺脫回調(diào)地獄的應(yīng)用程序,并簡化錯誤處理。
它暴露了自己的 ctx.request 和 ctx.response 對象,而不是 node 的 req 和 res 對象。
另一方面,Express 通過附加的屬性和方法增加了 node 的 req 和 res 對象,并且包含許多其他 “框架” 功能,如路由和模板,而 Koa 則沒有。
因此,Koa 可被視為 node.js 的 http 模塊的抽象,其中 Express 是 node.js 的應(yīng)用程序框架。
功能 | Koa | Express | Connect |
---|---|---|---|
Middleware Kernel | ? | ? | ? |
Routing | - | ? | - |
Templating | - | ? | - |
Sending Files | - | ? | - |
JSONP | - | ? | - |
因此,如果您想要更接近 node.js 和傳統(tǒng)的 node.js 樣式編碼,那么您可能希望堅持使用Connect/Express 或類似的框架。
如果你想擺脫回調(diào),請使用 Koa。
由于這種不同的理念,其結(jié)果是傳統(tǒng)的 node.js “中間件”(即“(req,res,next)”的函數(shù))與Koa不兼容。 你的應(yīng)用基本上要重新改寫了。
Koa 替代 Express?它更像是 Connect,但是很多 Express 的好東西被轉(zhuǎn)移到 Koa 的中間件級別,以幫助形成更強大的基礎(chǔ)。 這使得中間件對于整個堆棧而言不僅僅是最終應(yīng)用程序代碼,而且更易于書寫,并更不容易出錯。
通常,許多中間件將重新實現(xiàn)類似的功能,甚至更糟的是不正確地實現(xiàn)它們, 如簽名的cookie 加密等通常是應(yīng)用程序特定的,而不是中間件特定的。
Koa 替代 Connect?不,只是不同的功能,現(xiàn)在通過構(gòu)建器也可以讓我們用較少的回調(diào)編寫代碼。 Connect 同樣可以,有些人可能仍然喜歡它,這取決于你喜歡什么。
為什么 Koa 不是 Express 4.0?Koa 與現(xiàn)在所知的 Express 差距很大,設(shè)計根本上有很大差異,所以從 Express 3.0 遷移到Express 4.0 將有意味著重寫整個應(yīng)用程序,所以我們考慮創(chuàng)建一個新的庫。
Koa 與 Connect/Express 有哪些不同? 基于 Promises 的控制流程沒有回調(diào)地獄。
通過 try/catch 更好的處理錯誤。
無需域。
Koa 非常精簡不同于 Connect 和 Express, Koa 不含任何中間件.
不同于 Express, 不提供路由.
不同于 Express, 不提供許多便捷設(shè)施。 例如,發(fā)送文件.
Koa 更加模塊化.
Koa 對中間件的依賴較少例如, 不使用 “body parsing” 中間件,而是使用 body 解析函數(shù)。
Koa 抽象 node 的 request/response減少攻擊。
更好的用戶體驗。
恰當(dāng)?shù)牧魈幚怼?/p> Koa 路由(第三方庫支持)
由于 Express 帶有自己的路由,而 Koa 沒有任何內(nèi)置路由,但是有 koa-router 和 koa-route 第三方庫可用。同樣的, 就像我們在 Express 中有 helmet 保證安全, 對于 koa 我們有 koa-helmet 和一些列的第三方庫可用。
如果這篇文章對您有幫助, 感謝 下方點贊 或 Star GitHub: koa-docs-Zh-CN 支持, 謝謝.
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/89470.html
摘要:常見問題此系列文章的應(yīng)用示例已發(fā)布于可以幫助改進(jìn)或關(guān)注更新歡迎替代它更像是,但是很多的好東西被轉(zhuǎn)移到的中間件級別,以幫助形成更強大的基礎(chǔ)。這使得中間件對于整個堆棧而言不僅僅是最終應(yīng)用程序代碼,而且更易于書寫,并更不容易出錯。 常見問題 此系列文章的應(yīng)用示例已發(fā)布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進(jìn)或 Star 關(guān)注更新. 歡迎 Star. Koa...
此系列文章的應(yīng)用示例已發(fā)布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進(jìn)或 Star 關(guān)注更新. 歡迎 Star. 相關(guān) API 上下文(Context) 請求(Request) 響應(yīng)(Response) 安裝 Koa 依賴 node v7.6.0 或 ES2015及更高版本和 async 方法支持. 你可以使用自己喜歡的版本管理器快速安裝支持的 node 版本:...
摘要:的對象提供了用于處理響應(yīng)的方法,該響應(yīng)委托給。應(yīng)用對象是與的服務(wù)器和處理中間件注冊的接口,從發(fā)送到中間件,默認(rèn)錯誤處理,以及上下文,請求和響應(yīng)對象的配置。 此系列文章的應(yīng)用示例已發(fā)布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進(jìn)或 Star 關(guān)注更新. 歡迎 Star. showImg(https://segmentfault.com/img/bVNQYf...
摘要:一個遷移方式是逐個更新它們。刪除特定的日志記錄行為對于環(huán)境的顯式檢查從錯誤處理中刪除。直接或它不再使用并已廢棄。支持仍然支持分支,但應(yīng)該不會得到功能性更新。除了此遷移指南外,文檔將針對最新版本。 從 Koa v1.x 遷移到 v2.x 此系列文章的應(yīng)用示例已發(fā)布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進(jìn)或 Star 關(guān)注更新. 歡迎 Star. 新的中...
摘要:當(dāng)中間件運行時,它必須手動調(diào)用來運行下游中間件。例如,這個中間件從讀取文件名,然后在將給指定合并結(jié)果之前并行讀取每個文件的內(nèi)容。當(dāng)你無法控制中間件的名稱時,這很有用。 指南 此系列文章的應(yīng)用示例已發(fā)布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進(jìn)或 Star 關(guān)注更新. 歡迎 Star. 本指南涵蓋的 Koa 主題不與 API 直接相關(guān),例如編寫中間件的最...
閱讀 1091·2021-11-16 11:44
閱讀 1376·2019-08-30 13:12
閱讀 2414·2019-08-29 16:05
閱讀 3080·2019-08-28 18:29
閱讀 915·2019-08-26 13:41
閱讀 3236·2019-08-26 13:34
閱讀 2604·2019-08-26 10:35
閱讀 941·2019-08-26 10:28