koa2 + node7 是怎样的体验?
恰逢一个简单的小项目,寻思着体验下 koa2 + node7 的组合。之所以 koa 升级到 2.0 版本,一个重大改变是正式支持使用 async/await
开发中间件 ,而之前这个是通过 app.experimental = true
开启试验属性支持的;另外也不再支持 node < 4
的版本,代码风格基于 ES6
。而选择node7,是因为其对 ES7 的大部分语法已经支持(完整支持情况见:http://node.green/#ES2017),尤其是通过 --harmony
可以开启 async/await
支持。可以这么说,用了 node7,后端开发可以不用 babel 了。
koa2 及其中间件
初始化项目完毕后,使用 npm i koa@next
安装 2.0 版本。一些 koa 相关的中间件也都提供了@next
版本,来支持 koa2
,例如koa-bodyparser
,通过 npm i koa-bodyparser@next
安装支持 koa2 的版本。
测试 async/await
测试框架不多说,直接上 mocha
,已经支持 async/await
,回想一年多前还选择了一些 co-mocha
之类的库。而现在执行测试时,只需 mocha --harmony
,一键启动 async/await
,我的测试用例已经开始咆哮了~
测试覆盖率检测,选择 istanbul
,安装时要指明 1.0
以上版本,因为目前其 1.0
版本还处于 alpha
状态。只有安装 1.0 以上版本才能支持 async/await
的异步测试。执行测试时,需要node --harmony ./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha
如果强制覆盖率达到多少,可以增加.istanbul.yml
配置文件,内容如下:
check: global: statements: 95 lines: 95 branches: 80 // 这个是指 if/else 等分支的覆盖率,很容易理解偏 --! functions: 100
为了方便执行,在 package.json
增加如下命令:
"scripts": { "check-cover": "node --harmony ./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha -- tests/* && ./node_modules/.bin/istanbul check-cover", }
后续每次提交,通过 git 钩子或者在 CI 里增加检查只需要一行 npm run check-cover
搞定。
代码风格
是时候尝试 JS standard style了,安装 npm i standard
,接下来不用再配置其他繁杂的代码风格检测工具。它也支持 vim
等各种编辑器工具。当你遇到不符合规范的代码,直接 standard --fix
便能将你解决大部分问题。需要注意的时,由于测试用例中的 describe
it
等全局关键字,需要在 package.json
中指明,配置如下:
"standard": { "globals": [ "describe", "before", "beforeEach", "after", "afterEach", "it" ] }
配置完这些,基本上可以很愉快的用最新的姿势,写最爽的代码了,也不用去折腾 babel,除非你还要 import
的支持