使用 koa
2015-08-14 10:54
513 查看
环境
koa 是这样介绍自己的
Koa 应用是一个包含中间件 generator 方法数组的对象。当请求到来时, 这些方法会以 stack-like 的顺序执行, 从这个角度来看,Koa 和其他中间件系统(比如 Ruby Rack 或者 Connect/Express )非常相似. 然而 Koa 的一大设计理念是: 通过其他底层中间件层提供高级「语法糖」,而不是Koa. 这大大提高了框架的互操作性和健壮性, 并让中间件开发变得简单有趣.
相比 express, koa 是一个非常精简的 web 框架,需要的中间件都可以自己造。koa 的 generator 委托的实现是基于 TJ 大神的 co。
测试代码-日志中间件:
启动、访问
测试代码-404中间件
使用 koa (其实是 co 的功劳),可以方便的将异步的回调的代码写成非阻塞的顺序的代码。
koa 例子
nodejs: v0.12.7 koa: v0.21.0
koa 是这样介绍自己的
Koa 应用是一个包含中间件 generator 方法数组的对象。当请求到来时, 这些方法会以 stack-like 的顺序执行, 从这个角度来看,Koa 和其他中间件系统(比如 Ruby Rack 或者 Connect/Express )非常相似. 然而 Koa 的一大设计理念是: 通过其他底层中间件层提供高级「语法糖」,而不是Koa. 这大大提高了框架的互操作性和健壮性, 并让中间件开发变得简单有趣.
相比 express, koa 是一个非常精简的 web 框架,需要的中间件都可以自己造。koa 的 generator 委托的实现是基于 TJ 大神的 co。
测试代码-日志中间件:
var koa = require('koa'); var app = koa(); function logger() { return function * (next) { if ('/' != this.path) { return; } var start = new Date; yield next; var ms = new Date - start; console.log('URL:', this.url, " TIME:", ms, 'ms'); }; } app.use(logger()); app.use(function * () { this.body = 'hello koa'; }); app.listen(4000);
启动、访问
[root@nginx koa]# node --harmony app.js URL: / TIME: 4 ms
测试代码-404中间件
var koa = require('koa'); var app = koa(); function pageNotFound() { return function * (next) { yield next; if (404 != this.status) { return; } this.status = 404; switch (this.accepts('html', 'json')) { case 'html': this.type = 'html'; this.body = '<p>Page Not Found</p>'; break; case 'json': this.body = { message: 'Page Not Found' }; break; default: this.type = 'text'; this.body = 'Page Not Found'; } } } app.use(pageNotFound()); app.use(function * () { if ('/' == this.path) { this.body = 'hello koa'; } }); app.listen(4000);
使用 koa (其实是 co 的功劳),可以方便的将异步的回调的代码写成非阻塞的顺序的代码。
koa 例子
相关文章推荐
- 使用ruby部署工具mina快速部署nodejs应用教程
- Google官方支持的NodeJS访问API,提供后台登录授权
- nodejs教程之环境安装及运行
- nodejs中的fiber(纤程)库详解
- 基于NodeJS的前后端分离的思考与实践(五)多终端适配
- 基于NodeJS的前后端分离的思考与实践(二)模版探索
- 我的NodeJs学习小结(一)
- nodejs中实现sleep功能实例
- Nodejs异步回调的优雅处理方法
- Windows系统下使用Sublime搭建nodejs环境
- nodejs实现获取某宝商品分类
- nodejs简单实现中英文翻译
- Node.js插件的正确编写方式
- 使用upstart把nodejs应用封装为系统服务实例
- NodeJS Web应用监听sock文件实例
- Nodejs学习笔记之测试驱动
- Nodejs学习笔记之Stream模块
- 如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
- Nodejs为什么选择javascript为载体语言
- Nodejs极简入门教程(一):模块机制