在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:demopark/koa-docs-Zh-CN开源软件地址:https://github.com/demopark/koa-docs-Zh-CN开源编程语言:开源软件介绍:Koa 通过 node.js 实现了一个十分具有表现力的 HTTP 中间件框架,力求让 Web 应用开发和 API 使用更加地愉快。Koa 的中间件之间按照编码顺序在栈内依次执行,允许您执行操作并向下传递请求(downstream),之后过滤并逆序返回响应(upstream)。 几乎所有 HTTP 服务器通用的方法都被直接集成到 Koa 大约570行源码的代码库中。其中包括内容协商,节点不一致性的规范化,重定向等等操作。 Koa没有捆绑任何中间件。 安装Koa 依赖 node v7.6.0 或 ES2015及更高版本和 async 方法支持.
Hello koaconst Koa = require('koa');
const app = new Koa();
// 响应
app.use(ctx => {
ctx.body = 'Hello Koa';
});
app.listen(3000); 入门
中间件Koa 是一个中间件框架,可以采用两种不同的方法来实现中间件:
以下是使用两种不同方法实现一个日志中间件的示例: 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// 中间件通常带有两个参数 (ctx, next), ctx 是一个请求的上下文(context),
// next 是调用执行下游中间件的函数. 在代码执行完成后通过 then 方法返回一个 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 之间已经被更改. 旧的签名已经被弃用. 旧的签名中间件支持将在 v3 中删除 请参阅 迁移指南 获取有关从 v1.x 升级并使用 v2.x 中间件的更多信息。 上下文, 请求和响应每个中间件都接收一个 Koa 的 app.use(async (ctx, next) => { await next(); }); Koa 提供了一个 这是一个检查请求客户端 xml 支持的示例。 app.use(async (ctx, next) => {
ctx.assert(ctx.request.accepts('xml'), 406);
// 相当于:
// if (!ctx.request.accepts('xml')) ctx.throw(406);
await next();
}); Koa提供了一个 Koa 对 Node 的请求和响应对象进行委托而不是扩展它们。这种模式提供了更清晰的接口,并减少了不同中间件与 Node 本身之间的冲突,并为流处理提供了更好的支持。
这里是一个使用 Koa 的 app.use(async (ctx, next) => {
await next();
ctx.response.type = 'xml';
ctx.response.body = fs.createReadStream('really_large.xml');
});
关于 Koa 应用程序在执行 应用对象是带有 node http 服务的 Koa 接口,它可以处理中间件的注册,将http请求分发到中间件,进行默认错误处理,以及对上下文,请求和响应对象进行配置。 了解有关应用程序对象的更多信息请到 应用 API 参考. 文档Babel 配置如果你正在使用的不是 $ npm install @babel/register @babel/preset-env @babel/cli --save-dev 在开发环境中, 你可能想要使用 node --require @babel/register <your-entry-file> 在生产环境中, 你可能想要使用 babel src --out-dir dist --copy-files 还有你的 {
"presets": [
["@babel/preset-env", {
"targets": {
"node": true
}
}]
]
} 故障排除运行测试
赞赏支持 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论