Nodejs-Koa是一个干净的框架

关于koa

今天学习了plover的底层框架koa。nodejs框架用的最多的是express,社区也最大、资料比较全,简单易上手,所以在我自己写的一个音乐分享的网站中后台框架用的是express。之前就听说过koa是一个优雅的后台框架,小而美,今天读了读相关介绍,搭了个最简单的服务器,有点体会到为什么形容一个框架“优雅”、“美”。

装饰器(Decorator)

书里这么说:装饰器用于给对象在运行期间动态的增加某个功能,职责等,我曾经用装饰器测过排序算法的速度,定义一个装饰器有点麻烦,但挺好用。koa底层使用装饰器函数,很多方法都要求传入一个函数(普通函数或Generator函数)作为实参。比如:注入中间件var router = require(‘koa-router’);app.use(router(app)); 这样对注入的中间件进行了包装。传说ES7会支持这个特性。

生成器(Generator)

生成器是ES6里异步的解决方案。koa使用ES6语法,很好的利用生成器进行异步编程,减少像express中那样的回调,提高代码可读性和可维护性。

支持ES6

由于koa本身基于ES6的Generator,所以对ES6支持应该比较好。ES6很多新特性还是挺有用的。之前基于ES6写React就遇到过部分ES6语法不支持问题。比如:如果用ES6就不支持mixin;用ES6语法为对象添加方法,在组件中使用该方法作为子组件click等事件的回调函数时,需要手动bind(this)

错误处理

nodejs编程的一个原则是错误处理优先,由于node的回调异步特性,无法通过try catch来捕捉所有的异常,很多回调的第一个参数都应该是err,express也是如此。nodejs有一个错误处理的中间件domain,它本身是一个EventEmitter,通过nodejs事件循环来查找错误,但有时候会遇到domain嵌套,很麻烦,想写一个健壮的nodejs服务有时候很难,毕竟逻辑越复杂人越容易犯错、忘东西。koa有error事件,可以监听error并进行错误处理,简单明了。

其他还有大家常说的koa很小,扩展性强等,不赘述。

正因为以上几点,koa给人一种干净利落的感觉,体积小、编程方式干净。

你可能感兴趣的:(Nodejs,koa)