摘要:的對象提供了用于處理響應(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 koaHello 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 對象作為 Context 的 request 屬性。
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 對象作為 Context 的 response 屬性。
Koa的 Response 對象提供了用于處理 http 響應(yīng)的方法,該響應(yīng)委托給 ServerResponse。
Koa 對 Node 的請求和響應(yīng)對象進(jìn)行委托而不是擴(kuò)展它們。這種模式提供了更清晰的接口,并減少了不同中間件與 Node 本身之間的沖突,并為流處理提供了更好的支持。
IncomingMessage 仍然可以直接被訪問,因?yàn)?Context 和 ServerResponse 上的 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 對象還提供了其 request 和 response 方法的快捷方式。在前面的例子中,可以使用 ctx.type 而不是 ctx.request.type,而 ctx.accepts 可以用來代替 ctx.request.accepts。
關(guān)于 Request, Response 和 Context 更多詳細(xì)信息, 參閱 請求 API 參考,
響應(yīng) API 參考 和 上下文 API 參考.
在執(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
摘要:一個(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. 新的中...
摘要:使用承諾和異步功能來擺脫回調(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)注更新...
摘要:常見問題此系列文章的應(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...
摘要:當(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),例如編寫中間件的最...
摘要:但是,默認(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...
閱讀 2677·2021-11-24 09:38
閱讀 1987·2019-08-30 15:53
閱讀 1248·2019-08-30 15:44
閱讀 3240·2019-08-30 14:10
閱讀 3591·2019-08-29 16:29
閱讀 1811·2019-08-29 16:23
閱讀 1108·2019-08-29 16:20
閱讀 1481·2019-08-29 11:13