国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Koa v2.x 中文文檔 從 Koa v1.x 遷移到 v2.x

fancyLuo / 771人閱讀

摘要:一個(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。

應(yīng)用對(duì)象構(gòu)造函數(shù)需要 new

在 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

相關(guān)文章

  • Koa v2.x 中文文檔

    摘要:的對(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...

    Cobub 評(píng)論0 收藏0
  • Koa v2.x 中文文檔 常見問題

    摘要:常見問題此系列文章的應(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...

    Paul_King 評(píng)論0 收藏0
  • Koa v2.x 中文文檔 Koa 對(duì)比 Express

    摘要:使用承諾和異步功能來擺脫回調(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)注更新...

    summerpxy 評(píng)論0 收藏0
  • Koa v2.x 中文文檔 上下文(Context)

    摘要:方法拋出一個(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 的 ...

    Arno 評(píng)論0 收藏0
  • Koa v2.x 中文文檔 錯(cuò)誤處理

    摘要:但是,默認(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...

    zgbgx 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<