Koa (koajs) - 基于 Node.js 平台的下一代 web 开发框架 - Koajs 中文文档 - AI研究社

Koa (koajs) - 基于 Node.js 平台的下一代 web 开发框架 - Koajs 中文文档

关键字 Koakoajsweb框架

Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。

通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。

Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。

Koa (koajs) - 基于 Node.js 平台的下一代 web 开发框架 - Koajs 中文文档 - AI研究社

Koa 应用程序是一个包含一组中间件函数的对象,它是按照类似堆栈的方式组织和执行的。

Koa 类似于你可能遇到过的许多其他中间件系统,例如 Ruby 的 Rack ,Connect 等,然而,一个关键的设计点是在其低级中间件层中提供高级“语法糖”。

这提高了互操作性,稳健性,并使书写中间件更加愉快。

这包括诸如内容协商,缓存清理,代理支持和重定向等常见任务的方法。

尽管提供了相当多的有用的方法 Koa 仍保持了一个很小的体积,因为没有捆绑中间件。

Koa 中间件以更传统的方式级联,您可能习惯使用类似的工具 - 之前难以让用户友好地使用 node 的回调。

然而,使用 async 功能,我们可以实现 “真实” 的中间件。

对比 Connect 的实现,通过一系列功能直接传递控制,直到一个返回,Koa 调用“下游”,然后控制流回“上游”。

下面以 “Hello World” 的响应作为示例,当请求开始时首先请求流通过 x-response-time 和 logging 中间件,然后继续移交控制给 response 中间件。

当一个中间件调用 next() 则该函数暂停并将控制传递给定义的下一个中间件。

当在下游没有更多的中间件执行后,堆栈将展开并且每个中间件恢复执行其上游行为。

应用程序设置是 app 实例上的属性,目前支持如下:app.env 默认是 NODE_ENV 或 "development",app.keys 签名的 cookie 密钥数组,app.proxy 当真正的代理头字段将被信任时,忽略 .subdomains 的 app.subdomainOffset 偏移量,默认为 2,app.proxyIpHeader 代理 ip 消息头, 默认为 X-Forwarded-For,app.maxIpsCount 从代理 ip 消息头读取的最大 ips, 默认为 0 (代表无限)。

Koa 应用程序不是 HTTP 服务器的1对1展现。

可以将一个或多个 Koa 应用程序安装在一起以形成具有单个HTTP服务器的更大应用程序。

创建并返回 HTTP 服务器,将给定的参数传递给 Server#listen()。

这些内容都记录在 nodejs.org。

app.context 是从其创建 ctx 的原型。

您可以通过编辑 app.context 为 ctx 添加其他属性。

这对于将 ctx 添加到整个应用程序中使用的属性或方法非常有用,这可能会更加有效(不需要中间件)和/或 更简单(更少的 require()),而更多地依赖于ctx,这可以被认为是一种反模式。

Koa Context 将 node 的 request 和 response 对象封装到单个对象中,为编写 Web 应用程序和 API 提供了许多有用的方法。

这些操作在 HTTP 服务器开发中频繁使用,它们被添加到此级别而不是更高级别的框架,这将强制中间件重新实现此通用功能。

为了绕过 Koa 的内置 response 处理,你可以显式设置 ctx.respond = false;。

如果您想要写入原始的 res 对象而不是让 Koa 处理你的 response,请使用此参数。

请注意,Koa _不_ 支持使用此功能。

这可能会破坏 Koa 中间件和 Koa 本身的预期功能。

使用这个属性被认为是一个 hack,只是便于那些希望在 Koa 中使用传统的 fn(req, res) 功能和中间件的人。

本文地址 https://www.aiyanshe.com/site/com_bootcss_koa 转载请注明,建议用PC/手机浏览器(Edge/Chrome/Firefox等)打开。
大家在看的