摘要:一個遷移方式是逐個更新它們。刪除特定的日志記錄行為對于環境的顯式檢查從錯誤處理中刪除。直接或它不再使用并已廢棄。支持仍然支持分支,但應該不會得到功能性更新。除了此遷移指南外,文檔將針對最新版本。
從 Koa v1.x 遷移到 v2.x
新的中間件簽名此系列文章的應用示例已發布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進或 Star 關注更新. 歡迎 Star.
Koa v2 引入了新的中間件簽名。
舊簽名中間件(v1.x)支持將在 v3 中刪除
新的中間件簽名是這樣的:
// 使用異步箭頭方法 app.use(async (ctx, next) => { try { await next() // next 現在是一個方法 } catch (err) { ctx.body = { message: err.message } ctx.status = err.status || 500 } }) app.use(async ctx => { const user = await User.getById(this.session.userid) // await 替換了 yield ctx.body = user // ctx 替換了 this })
你不必一定使用異步函數 - 你只需要傳遞一個返回 promise 的函數。返回 promise 的常規方法也可以使用!
簽名已更改為通過 ctx 取代 this 顯式參數傳遞 Context。
上下文傳遞更改使得 koa 更能兼容 es6 的箭頭函數,通過捕獲 “this”。
在 v2.x 中使用 v1.x 中間件Koa v2.x將嘗試轉換 app.use 上的舊簽名,生成器中間件, 使用 koa-convert.
不過建議您選擇盡快遷移所有 v1.x 中間件。
// Koa 將轉換 app.use(function *(next) { const start = Date.now(); yield next; const ms = Date.now() - start; console.log(`${this.method} ${this.url} - ${ms}ms`); });
您也可以手動執行,在這種情況下,Koa不會轉換。
const convert = require("koa-convert"); app.use(convert(function *(next) { const start = Date.now(); yield next; const ms = Date.now() - start; console.log(`${this.method} ${this.url} - ${ms}ms`); }));升級中間件
您將不得不使用新的中間件簽名將您的生成器轉換為異步功能:
app.use(async (ctx, next) => { const user = await Users.getById(this.session.user_id); await next(); ctx.body = { message: "some message" }; })
升級中間件可能需要一些工作。 一個遷移方式是逐個更新它們。
將所有當前的中間件包裝在 koa-convert 中
測試
npm outdated 看看哪個 koa 中間件已經過時了
更新一個過時的中間件,使用 koa-convert 刪除
測試
重復步驟3-5,直到完成
升級你的代碼您應該開始重構代碼,以便輕松遷移到 Koa v2:
各處都是 promises 返回!
不要使用 yield*
不要使用 yield {} 或 yield [].
轉換 yield [] 為 yield Promise.all([])
轉換 yield {} 為 yield Bluebird.props({})
您也可以重構 Koa 中間件功能之外的邏輯。 創建一個方法像 function* someLogic(ctx) {} 然后在你的中間件中調用 const result = yield someLogic(this).
不使用 this 將有助于遷移到新的中間件簽名,所以不使用 this。
在 v1.x 中,可以直接調用應用構造函數,而不用 new 實例化一個應用程序的實例。 例如:
var koa = require("koa"); var app = module.exports = koa();
v2.x 使用 es6 類,需要使用 new 關鍵字。
var koa = require("koa"); var app = module.exports = new koa();刪除 ENV 特定的日志記錄行為
對于 test 環境的顯式檢查從錯誤處理中刪除。
依賴變化co 不再與Koa捆綁在一起。直接 require 或 import 它.
composition 不再使用并已廢棄。
v1.x 支持仍然支持 v1.x 分支,但應該不會得到功能性更新。 除了此遷移指南外,文檔將針對最新版本。
幫幫忙如果您遇到本遷移指南未涉及的遷移相關問題,請考慮提交文檔提取請求。
如果這篇文章對您有幫助, 感謝 下方點贊 或 Star GitHub: koa-docs-Zh-CN 支持, 謝謝.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/89471.html
摘要:的對象提供了用于處理響應的方法,該響應委托給。應用對象是與的服務器和處理中間件注冊的接口,從發送到中間件,默認錯誤處理,以及上下文,請求和響應對象的配置。 此系列文章的應用示例已發布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進或 Star 關注更新. 歡迎 Star. showImg(https://segmentfault.com/img/bVNQYf...
摘要:常見問題此系列文章的應用示例已發布于可以幫助改進或關注更新歡迎替代它更像是,但是很多的好東西被轉移到的中間件級別,以幫助形成更強大的基礎。這使得中間件對于整個堆棧而言不僅僅是最終應用程序代碼,而且更易于書寫,并更不容易出錯。 常見問題 此系列文章的應用示例已發布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進或 Star 關注更新. 歡迎 Star. Koa...
摘要:使用承諾和異步功能來擺脫回調地獄的應用程序,并簡化錯誤處理。它暴露了自己的和對象,而不是的和對象。因此,可被視為的模塊的抽象,其中是的應用程序框架。這使得中間件對于整個堆棧而言不僅僅是最終應用程序代碼,而且更易于書寫,并更不容易出錯。 Koa 與 Express 此系列文章的應用示例已發布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進或 Star 關注更新...
摘要:方法拋出一個屬性默認為的錯誤,這將允許做出適當地響應。這用于修飾其人機友好型錯誤并向上游的請求者報告非常有用。請注意,不支持使用此功能。這可能會破壞中間件和本身的預期功能。 上下文(Context) 此系列文章的應用示例已發布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進或 Star 關注更新. 歡迎 Star. Koa Context 將 node 的 ...
摘要:但是,默認錯誤處理程序對于大多數用例來說都是足夠好的。錯誤偵聽器接收所有中間件鏈返回的錯誤,如果一個錯誤被捕獲并且不再拋出,它將不會被傳遞給錯誤偵聽器。 錯誤處理 此系列文章的應用示例已發布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進或 Star 關注更新. 歡迎 Star. Try-Catch 使用 async 方法意味著你可以 try-catch n...
閱讀 3962·2021-09-22 10:02
閱讀 3380·2019-08-30 15:52
閱讀 3071·2019-08-30 12:51
閱讀 770·2019-08-30 11:08
閱讀 2073·2019-08-29 15:18
閱讀 3116·2019-08-29 12:13
閱讀 3606·2019-08-29 11:29
閱讀 1883·2019-08-29 11:13