KoaJS教程

Koa.js 级联

中间件函数是可以访问 上下文对象和应用程序请求-响应循环中的下一个中间件函数的函数。这些函数用于修改请求和响应对象以用于解析请求正文、添加响应头等任务。 Koa 更进一步,通过产生 '下游',然后将控制流回 '上游'。这种效果称为 级联
以下是一个简单的中间件功能示例。
var koa = require('koa');
var app = koa();
var _ = router();
//Simple request time logger
app.use(function* (next) {
   console.log("A new request received at " + Date.now());
   
   //this function call is very important. It tells that more processing is 
   //required for the current request and is in the next middleware function/route handler.
   yield next;
});
app.listen(3000);
服务器上的每个请求都会调用上面的中间件。因此,每次请求后,我们都会在控制台中收到以下消息。
A new request received at 1467267512545
要将其限制为特定路由(及其所有子路由),我们只需要像路由一样创建路由。实际上只是这些中间件处理我们的请求。
例如
var koa = require('koa');
var router = require('koa-router');
var app = koa();
var _ = router();
//Simple request time logger
_.get('/request/*', function* (next) {
   console.log("A new request received at " + Date.now());
   yield next;
});
app.use(_.routes());
app.listen(3000);
现在每当你请求'/request'的任何子路由时,它才会记录时间。

中间件调用顺序

关于 Koa 中间件的最重要的事情之一是它们写入/包含在文件中的顺序,就是它们在下游执行的顺序。一旦我们在中间件中遇到一个 yield 语句,它就会切换到下一个中​​间件,直到我们到达最后一个。然后我们再次开始从 yield 语句返回并恢复函数。
例如,在下面的代码片段中,第一个函数首先执行直到 yield,然后第二个中间件直到 yield,然后是第三个。由于我们这里没有更多的中间件,我们开始向上移动,以相反的顺序执行,即第三、第二、第一。这个例子总结了如何以 Koa 的方式使用中间件。
var koa = require('koa');
var app = koa();
//Order of middlewares
app.use(first);
app.use(second);
app.use(third);
function *first(next) {
   console.log("I'll be logged first. ");
   
   //Now we yield to the next middleware
   yield next;
   
   //We'll come back here at the end after all other middlewares have ended
   console.log("I'll be logged last. ");
};
function *second(next) {
   console.log("I'll be logged second. ");
   yield next;
   console.log("I'll be logged fifth. ");
};
function *third(next) {
   console.log("I'll be logged third. ");
   yield next;
   console.log("I'll be logged fourth. ");
};
app.listen(3000);
当我们在运行这段代码后访问'/'时,在我们的控制台上我们会得到-
I'll be logged first. 
I'll be logged second. 
I'll be logged third. 
I'll be logged fourth. 
I'll be logged fifth. 
I'll be logged last. 
下图总结了上述示例中实际发生的情况。
Middleware Desc
既然我们知道如何创建自己的中间件,让我们讨论一些最常用的社区创建的中间件。

第三方中间件

express 的第三方中间件列表可在此处获得。是一些最常用的中间件-
koa-bodyparser koa-router koa 静态 koa 压缩
我们将在后续章节中讨论多个中间件。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4