开发手册 欢迎您!
软件开发者资料库

Koa.js - Cascading

Koa.js Cascading - 从基本概念到高级概念,简单易学地学习Koa.js,其中包括概述,环境,Hello World,生成器,路由,URL构建,HTTP方法,请求对象,响应对象,重定向,错误处理,级联,表单数据,文件上传,模板,静态文件,Cookie,会话,身份验证,压缩,缓存,数据库,RESTful API,日志记录,脚手架,资源。

中间件函数是可以访问上下文对象的函数,以及应用程序请求 - 响应周期中的下一个中间件函数.这些函数用于修改任务的请求和响应对象,例如解析请求主体,添加响应头等.Koa更进一步,产生'下游',然后将控制流回 '上游'的.此效果称为级联.

以下是一个中间件函数的简单示例.

var koa = require('koa');var app = koa();var _ = router();//Simple request time loggerapp.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 middlewaresapp.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

现在我们知道如何创建自己的中间件,让我们讨论一些最常用的社区创建的中间件.

第三方中间件

快递的第三方中间件列表可用这里.以下是一些最常用的中间件 :

  • koa-bodyparser

  • koa-router

  • koa-static

  • koa-compress

我们将在后续章节中讨论多个中间件.