一个koa的路由中间件 https://github.com/zhangking/koar
支持错误处理,url映射,全局和controller级别过滤器。
使用方法
app.use(r.create({
folder:'./Controllers/',
before:function*(){},
after:function*(){},
error:function*(){this.body = 'error'},
map:{
'/user/:name':'/user/show'
}
}));
中间件会遍历folder下的文件,把文件内的方法映射存储起来。 在方法内 return false 就结束调用。 一个controlller 像这样
var co = require('co');
var before = function *(next){
var a = yield work;
var s = yield [a];
console.log(s);
console.log('before');
}
var after = function *(){
console.log('after');
}
var show = function *(name){
this.body = 'hello ' + name;
}
function sleep(ms) {
return function(done){
setTimeout(done, ms);
}
}
function *work() {
yield sleep(5000);
return 'yay';
}
exports.show = show;
exports.before = before;
exports.after = after;
可能还有问题,待完善,求意见。
我这几天也一直在弄这个 看看你的源码 学习一下
利用co实现aop,看起来不错的样子
一般约定大于配置思想,把folder:'./Controllers/'
这样的配置项干掉,如果需要定制的才需要写这个参数,会更帅
今天发现了这么个东东,感觉配置路由挺方便 https://github.com/enten/kaio
var kaio = require(‘kaio’); var router = require(‘koa-router’);
kaio() .setRoot(__dirname) .setHost(‘127.0.0.1’) .setPort(3000) .setUri(’/api’) .bind(’/’, BaseController) .bind(’/books’, BookController) .listen();
@SoaringTiger 嗯 ,但是每次有新的路径就需要添加bind ,感觉还是有点麻烦