成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Koa v2.x 中文文檔

Cobub / 3133人閱讀

摘要:的對象提供了用于處理響應(yīng)的方法,該響應(yīng)委托給。應(yīng)用對象是與的服務(wù)器和處理中間件注冊的接口,從發(fā)送到中間件,默認(rèn)錯(cuò)誤處理,以及上下文,請求和響應(yīng)對象的配置。

此系列文章的應(yīng)用示例已發(fā)布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進(jìn)或 Star 關(guān)注更新. 歡迎 Star.






此項(xiàng)目同步自 koajs / koa 項(xiàng)目中的 docs. 除特殊情況, 將保持每月一次的同步頻率.

用 node.js 來實(shí)現(xiàn) HTTP 的中間件框架,讓 Web 應(yīng)用程序和 API 可以更加愉快地編寫。Koa 的中間件堆棧以類似堆棧的方式流動(dòng),允許您執(zhí)行下游操作,然后過濾并操縱上游的響應(yīng)。

幾乎所有 HTTP 服務(wù)器通用的方法都被直接集成到 Koa 大約570行源碼的代碼庫中。其中包括比如內(nèi)容協(xié)商,規(guī)范節(jié)點(diǎn)不一致性,重定向等其它操作。

Koa沒有捆綁任何中間件。

安裝

Koa 依賴 node v7.6.0 或 ES2015及更高版本和 async 方法支持.

$ npm install koa
Hello koa
const Koa = require("koa");
const app = new Koa();

// 響應(yīng)
app.use(ctx => {
  ctx.body = "Hello Koa";
});

app.listen(3000);
入門

Kick-Off-Koa - 通過一系列自身指引的講解介紹了 Koa。

Workshop - 通過學(xué)習(xí) Koa 的講解,快速領(lǐng)會(huì)精髓。

Introduction Screencast - 關(guān)于 Koa 安裝入門的介紹。

中間件

Koa 是一個(gè)中間件框架,可以將兩種不同的功能作為中間件:

async function

common function

以下是每個(gè)不同功能記錄器的中間件示例:

async functions (node v7.6+)
app.use(async (ctx, next) => {
  const start = Date.now();
  await next();
  const ms = Date.now() - start;
  console.log(`${ctx.method} ${ctx.url} - ${ms}ms`);
});
Common function
// 中間件通常帶有兩個(gè)參數(shù) (ctx, next), ctx 是一個(gè)請求的上下文,
// next 是調(diào)用執(zhí)行下游中間件的函數(shù). 在代碼執(zhí)行完成后通過 then 方法返回一個(gè) Promise.

app.use((ctx, next) => {
  const start = Date.now();
  return next().then(() => {
    const ms = Date.now() - start;
    console.log(`${ctx.method} ${ctx.url} - ${ms}ms`);
  });
});
Koa v1.x 中間件簽名

中間件簽名在 v1.x 和 v2.x 之間已經(jīng)被更改. 舊的簽名已經(jīng)被棄用.

舊的簽名中間件支持將在 v3 中刪除

請參閱 遷移指南 獲取有關(guān)從 v1.x 升級(jí)并使用 v2.x 中間件的更多信息。

上下文, 請求和響應(yīng)

每個(gè)中間件都接收一個(gè) Koa 的 Context 對象,該對象封裝了一個(gè)傳入的 http 消息,并對該消息進(jìn)行了相應(yīng)的響應(yīng)。 ctx 通常用作上下文對象的參數(shù)名稱。

app.use(async (ctx, next) => { await next(); });

Koa 提供了一個(gè) Request 對象作為 Contextrequest 屬性。
Koa的 Request 對象提供了用于處理 http 請求的方法,該請求委托給 node http 模塊的IncomingMessage。

這是一個(gè)檢查請求客戶端 xml 支持的示例。

app.use(async (ctx, next) => {
  ctx.assert(ctx.request.accepts("xml"), 406);
  // 相當(dāng)于:
  // if (!ctx.request.accepts("xml")) ctx.throw(406);
  await next();
});

Koa提供了一個(gè) Response 對象作為 Contextresponse 屬性。
Koa的 Response 對象提供了用于處理 http 響應(yīng)的方法,該響應(yīng)委托給 ServerResponse。

Koa 對 Node 的請求和響應(yīng)對象進(jìn)行委托而不是擴(kuò)展它們。這種模式提供了更清晰的接口,并減少了不同中間件與 Node 本身之間的沖突,并為流處理提供了更好的支持。
IncomingMessage 仍然可以直接被訪問,因?yàn)?ContextServerResponse 上的 req 屬性可以直接作為 Context 上的 res 屬性訪問。

這里是一個(gè)使用 Koa 的 Response 對象將文件作為響應(yīng)體流式傳輸?shù)氖纠?/p>

app.use(async (ctx, next) => {
  await next();
  ctx.response.type = "xml";
  ctx.response.body = fs.createReadStream("really_large.xml");
});

Context 對象還提供了其 requestresponse 方法的快捷方式。在前面的例子中,可以使用 ctx.type 而不是 ctx.request.type,而 ctx.accepts 可以用來代替 ctx.request.accepts

關(guān)于 Request, ResponseContext 更多詳細(xì)信息, 參閱 請求 API 參考,
響應(yīng) API 參考 和 上下文 API 參考.

Koa 應(yīng)用程序

在執(zhí)行 new Koa() 時(shí)創(chuàng)建的對象被稱為 Koa 應(yīng)用程序?qū)ο蟆?/p>

應(yīng)用對象是 Koa 與 node 的 http 服務(wù)器和處理中間件注冊的接口,從 http 發(fā)送到中間件,默認(rèn)錯(cuò)誤處理,以及上下文,請求和響應(yīng)對象的配置。

了解有關(guān)應(yīng)用程序?qū)ο蟮母嘈畔⒄埖?應(yīng)用 API 參考.

文檔

使用指南

錯(cuò)誤處理

Koa 與 Express

常見問題

從 Koa v1.x 遷移到 v2.x

API 文檔

上下文(Context)

請求(Request)

響應(yīng)(Response)

Koa 中間件列表

Babel 配置

如果你正在使用的不是 node v7.6+, 我們推薦你用 babel-preset-env 配置 babel :

$ npm install babel-register babel-preset-env --save

在你入口文件配置 babel-register:

require("babel-register");

還有你的 .babelrc 配置:

{
  "presets": [
    ["env", {
      "targets": {
        "node": true
      }
    }]
  ]
}
運(yùn)行測試
$ npm test

如果這篇文章對您有幫助, 感謝 下方點(diǎn)贊 或 Star GitHub: koa-docs-Zh-CN 支持, 謝謝.

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/89494.html

相關(guān)文章

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

    摘要:一個(gè)遷移方式是逐個(gè)更新它們。刪除特定的日志記錄行為對于環(huán)境的顯式檢查從錯(cuò)誤處理中刪除。直接或它不再使用并已廢棄。支持仍然支持分支,但應(yīng)該不會(huì)得到功能性更新。除了此遷移指南外,文檔將針對最新版本。 從 Koa v1.x 遷移到 v2.x 此系列文章的應(yīng)用示例已發(fā)布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進(jìn)或 Star 關(guān)注更新. 歡迎 Star. 新的中...

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

    摘要:使用承諾和異步功能來擺脫回調(diào)地獄的應(yīng)用程序,并簡化錯(cuò)誤處理。它暴露了自己的和對象,而不是的和對象。因此,可被視為的模塊的抽象,其中是的應(yīng)用程序框架。這使得中間件對于整個(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 中文文檔 常見問題

    摘要:常見問題此系列文章的應(yīng)用示例已發(fā)布于可以幫助改進(jìn)或關(guān)注更新歡迎替代它更像是,但是很多的好東西被轉(zhuǎn)移到的中間件級(jí)別,以幫助形成更強(qiáng)大的基礎(chǔ)。這使得中間件對于整個(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 中文文檔 使用指南

    摘要:當(dāng)中間件運(yùn)行時(shí),它必須手動(dòng)調(diào)用來運(yùn)行下游中間件。例如,這個(gè)中間件從讀取文件名,然后在將給指定合并結(jié)果之前并行讀取每個(gè)文件的內(nèi)容。當(dāng)你無法控制中間件的名稱時(shí),這很有用。 指南 此系列文章的應(yīng)用示例已發(fā)布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進(jìn)或 Star 關(guān)注更新. 歡迎 Star. 本指南涵蓋的 Koa 主題不與 API 直接相關(guān),例如編寫中間件的最...

    anquan 評(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)論

Cobub

|高級(jí)講師

TA的文章

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