用google-traceur和co运行ES6代码
原文 http://forjs.org/book/lkaK8WuNme/section/eJxbCH-uOUe 用google-traceur和co运行ES6代码 ====
推荐:《精通Node.js开发》 《Angular.js视频详解》
准备工作
首先安装 traceur 用于转换
npm install traceur
然后安装 co
npm install co
还需要安装thunkify,用于把回调方式的函数,转换成 co 能认得的函数。
npm install thunkify
创建src/test.js
var co = require("co");
var thunkify = require('thunkify');
function add(a,b,cb){
setTimeout(function (){
cb(null,a+b);
},2000);
}
var add2 = thunkify(add);
co(function *(){
var a = yield add2(1,3);
var b = yield add2(2,2);
console.log(a,b);
})();
编译
traceur --dir src dest
编译后的es5代码
$traceurRuntime.ModuleStore.getAnonymousModule(function() {
"use strict";
var co = require("co");
var thunkify = require('thunkify');
function add(a, b, cb) {
setTimeout(function() {
cb(null, a + b);
}, 2000);
}
var add2 = thunkify(add);
co($traceurRuntime.initGeneratorFunction(function $__0() {
var a,
b;
return $traceurRuntime.createGeneratorInstance(function($ctx) {
while (true)
switch ($ctx.state) {
case 0:
$ctx.state = 2;
return add2(1, 3);
case 2:
a = $ctx.sent;
$ctx.state = 4;
break;
case 4:
$ctx.state = 6;
return add2(2, 2);
case 6:
b = $ctx.sent;
$ctx.state = 8;
break;
case 8:
console.log(a, b);
$ctx.state = -2;
break;
default:
return $ctx.end();
}
}, $__0, this);
}))();
return {};
});
运行代码run.js
require("traceur");
require("./dest/test");
运行结果
4
4
4 回复
没看懂
co库你搜索一下 github就有了,是tj开发的。
-
- 为啥不直接用node 0.11运行呢
@TossShinHwa 也可以,这里主要说明了编译成 es5 后也可以使用 co 库。node0.11 的 harmony 参数后,也不完全支持 es6 ,traceur 支持es6,可以写其他 es6写法