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