nodejs-koa app详解

app.listen(...)

Koa 应用并不是是一个 1-to-1 表征关系的 HTTP 服务器。 一个或多个Koa应用能够被挂载到一块儿组成一个包含单一 HTTP 服务器的大型应用群。html

以下为一个绑定3000端口的简单 Koa 应用,其建立并返回了一个 HTTP 服务器,为Server#listen() 传递指定参数(参数的详细文档请查看nodejs.org)。node

var koa = require('koa');
var app = koa();
app.listen(3000);

app.listen(...) 其实是如下代码的语法糖:git

var http = require('http');
var koa = require('koa');
var app = koa();
http.createServer(app.callback()).listen(3000);

这意味着您能够同时支持 HTTPS 和 HTTPS,或者在多个端口监听同一个应用。github

var http = require('http');
var koa = require('koa');
var app = koa();
http.createServer(app.callback()).listen(3000);
http.createServer(app.callback()).listen(3001);

app.callback()

返回一个适合 http.createServer() 方法的回调函数用来处理请求。 您也可使用这个回调函数将您的app挂载在 Connect/Express 应用上。api

app.use(function)

为应用添加指定的中间件,详情请看 Middleware服务器

app.keys=

设置签名Cookie密钥,该密钥会被传递给 KeyGripcookie

固然,您也能够本身生成 KeyGrip 实例:app

app.keys = ['im a newer secret', 'i like turtle'];
app.keys = new KeyGrip(['im a newer secret', 'i like turtle'], 'sha256');

在进行cookie签名时,只有设置 signed 为 true 的时候,才会使用密钥进行加密:koa

this.cookies.set('name', 'tobi', { signed: true });

错误处理

默认状况下Koa会将全部错误信息输出到 stderr,除非 NODE_ENV 是 "test"。为了实现自定义错误处理逻辑(好比 centralized logging),您能够添加 "error" 事件监听器。socket

app.on('error', function(err){
  log.error('server error', err);
});

若是错误发生在 请求/响应 环节,而且其不可以响应客户端时,Contenxt 实例也会被传递到 error 事件监听器的回调函数里。

app.on('error', function(err, ctx){
  log.error('server error', err, ctx);
});

当发生错误但仍可以响应客户端时(好比没有数据写到socket中),Koa会返回一个500错误(Internal Server Error)。

不管哪一种状况,Koa都会生成一个应用级别的错误信息,以便实现日志记录等目的。

相关文章
相关标签/搜索