实现一个嵌套对象式的路由中间件

Posted by ngtmuzi on 2018-06-15
班门弄斧

起因

不喜欢命令式地一行行声明路由和处理函数,也觉得koa栈的各类路由中间件不好用,所以就想着自己做个玩

设计

对象路径=路由路径,无next逻辑

这个中间件的定位相当于最终路由,不支持内部的多层next的结构(但有提供框架本身的next参数),也不考虑RESTful的实现,所以代码还是挺简单的(要实现RESTful可以在处理函数内自己加判断,或者多做一层代理)

msg=路由参数+query+body

所有参数都从msg一个对象里取,类似ASP.NET的做法,在大多数情况下能方便开发,当然要想分别从不同地方取也是可以的

接受异步返回(promise)

得益于Node8.0+的async/await特性支持,我们终于可以写优雅的异步代码了(koa自身支持,不过express还是要加点处理)

统一的输出控制/错误捕获层

大多数项目都会想要一个统一的输出/错误处理层,所以提供了这个逻辑

支持路由参数

参考了express的实现代码引入path-to-regexp模块,可以写一些很cool的路由了

koa与express都支持

代码暂时还是分开维护的,毕竟两个框架实现上还是有很大不同

总结

反正我在生产环境用了挺久的,具体用法可以参考下面的链接

链接

Github-nRouter
暂时没有发布npm的打算(写英文好累的)