koa简介

Koa介绍

    koa 是由 Express 原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的 Web 框架。使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套,并极大地提升错误处理的效率。koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。

安装

cnpm install koa-generator -g

npm install koa

应用程序

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

一个关键的设计点是在其低级中间件层中提供高级“语法糖”。
这提高了互操作性,稳健性,并使书写中间件更加愉快。

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

const Koa=require('koa');
const app=new Koa();

app.use(ctx=>{
	ctx.body='Hello Koa';
})
app.listen(3000);1234567
级联

Koa调用下游,然后控制流回上游。

设置

应用程序设置是app实例上的属性,目前支持如下:

  • app.env默认是NODE_ENV或“development”

  • app.keys签名的cookie密钥数组

  • app.proxy当真正的代理头字段将被信任时

  • 忽略.subdomains的app.subdomainOffset偏移量,默认是2

  • app.proxylpHeader代理ip标头,默认为X-Forwarded-For

  • app.maxIpsCount从代理ip标头读取的最大ips,默认为0(代表无限)

然后将设置传递给构造函数

const Koa = require(‘koa’);
const app = new Koa({ proxy: true });

app.listen(…)

koa应用程序不是Http服务器1对1展现,可以将一个或多个Koa应用程序安装在一起以形成具有单个HTTP服务器的更大应用程序。

app.callback()

返回适用于http.createServer()方法的回调函数来处理请求,也可以使用此函数将koa应用程序挂载到Connect/Express应用程序中。

app.use(function)

将给定的中间件方法添加到应用程序。

app.keys=

设置签名的cookie密钥。

app.context

通过编辑context为ctx添加其他属性。

【注意】:

  • ctx上的许多属性都是使用getter,setter和Object.defineProperty()定义的

  • 安装的应用程序目前使用其父级的ctx和设置。因此,安装的应用程序只是一组中间件。

错误处理
自定义错误处理
app.on('error', err => {
  log.error('server error', err)
});1234

上下文Context

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

每个请求都将创建一个Context,并在中间件中作为接收器引用

app.use(async ctx => {
  ctx; // 这是 Context
  ctx.request; // 这是 koa Request
  ctx.response; // 这是 koa Response
});12345
API

Context具体访问方法和访问器

ctx.req

Node的request对象

ctx.res

Node的response对象

绕过koa的response处理是不被支持的,应避免使用以下node属性:

  • res.statusCode

  • res.writeHead()

  • res.write()

  • res.end()

ctx.request

Koa的Request对象

ctx.response

Koa的Response对象

ctx.state

推荐的命名空间,用于通过中间件传递信息和你的前端视图。

ctx.state.user = await User.find(id);
ctx.app

应用程序实例引用

ctx.app.emit

Koa应用扩展了内部EventEmitter,ctx.app.emit发出一个类型由第一个参数定义的事件。

ctx.cookies.get(name, [options])

通过options获取cookie name:
signed所请求的cookie应该被签名。

ctx.cookies.set(name,value, [options])

通过 options 设置 cookie name 的 value :

  • maxAge 一个数字表示从 Date.now() 得到的毫秒数

  • signed cookie 签名值

  • expires cookie 过期的 Date

  • path cookie 路径, 默认是’/’

  • domain cookie 域名

  • secure 安全 cookie

  • httpOnly 服务器可访问 cookie, 默认是 true

  • overwrite 一个布尔值,表示是否覆盖以前设置的同名的 cookie (默认是 false). 如果是 true, 在同一个请求中设置相同名称的所有 Cookie(不管路径或域)是否在设置此Cookie 时从 Set-Cookie 标头中过滤掉。

ctx.throw([status], [msg], [properties])

Helper方法抛出一个.status属性,默认为500的错误,这将允许Koa做出适当的响应。

允许以下组合:

ctx.throw(400);
ctx.throw(400, 'name required');
ctx.throw(400, 'name required', { user: user });
ctx.assert(value, [status], [msg], [properties])
ctx.assert(ctx.state.user, 401, 'User not found. Please login!');
ctx.respond

为了染过Koa内置response处理,可以显式设置ctx.respond=false。
如果想要写入原始的res对象而不是让Koa处理你的response,可以使用此参数。

请求Request

Koa Request对象是在node的vanilla请求对象之上的抽象,提供了诸多的Http服务器开发有用的功能。

API

响应Response

Koa Response对象是在node的vanilla请求对象之上的抽象,提供了诸多的Http服务器开发有用的功能。

合智互联客户成功服务热线:400-1565-661

admin
admin管理员

上一篇:js创建对象
下一篇:糖果派对爆分前兆8000倍触发彩球图片独家攻略

留言评论

暂无留言
取消
扫码支持