Node.js v7.0 已经正式进入 Current 了,也出现在了官网的首页。
async-functions
该版本更新 V8引擎
到 v54,集成了我最爱的一个 feature: async functions
,所以特别关注。
Install
1 2
| $ NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node nvm install 7.0.0 $ nvm use 7.0.0
|
体验
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| const timeout = function(delay) { return new Promise((resolve, reject) => { setTimeout(() => { resolve() }, delay) }) }
async function timer() { console.log('timer started') await Promise.resolve(timeout(100)); console.log('timer finished') }
timer()
|
如果直接执行,会报错:
1 2 3 4 5
| $ node app.js
async function timer () { ^^^^^^^^ SyntaxError: Unexpected token function
|
需要开启 --harmony-async-await
:
1 2 3 4
| $ node --harmony-async-await app.js
timer started timer finished
|
## koa2
koa2 也终于可以进入正式版了,虽然一直在用。 但目前仍是用 babel 进行编译的,一直期待项目可以不再需要编译。目前只剩下 ES Module 了。
一段 koa2 的代码(有没有一种美到的赶脚):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| const Koa = require('koa') const app = new Koa()
app.use(async (ctx, next) => { const start = new Date() await next() const ms = new Date() - start console.log(`${ctx.url} - ${ms}ms`) })
app.use(ctx => { ctx.body = 'Hello Koa' })
app.listen(3000)
|