用Nodejs和google-traceur及co运行ES6代码
用Nodejs和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
用Nodejs和google-traceur及co运行ES6代码
原文链接: http://forjs.org/book/lkaK8WuNme/section/eJxbCH-uOUe
推荐书籍
准备工作
首先,我们需要安装 traceur
、co
和 thunkify
。这些工具将帮助我们将ES6代码转换为ES5,并且让异步代码更易于管理。
npm install traceur
npm install co
npm install thunkify
创建src/test.js
在这个文件中,我们将定义一个简单的异步函数 add
,并使用 thunkify
将其转换为可以被 co
使用的形式。
// 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
将 ES6 代码转换为 ES5 代码。
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 {};
});
运行代码
最后,我们通过以下命令来运行编译后的代码。
node run.js
其中 run.js
的内容如下:
// run.js
require("traceur");
require("./dest/test");
运行结果
执行上述步骤后,你会看到以下输出:
4
4
这表明我们的代码已经成功地从ES6转换到ES5,并且通过 co
和 thunkify
正确地处理了异步操作。
没看懂
co库你搜索一下 github就有了,是tj开发的。
-
- 为啥不直接用node 0.11运行呢
为了使用Node.js、Google Traceur 和 co 运行 ES6 代码,我们需要完成以下步骤:
- 安装必要的依赖包:
traceur
用于将 ES6 代码转译为 ES5。co
用于处理生成器函数。thunkify
将回调函数转换为生成器可以使用的函数。
npm install traceur co thunkify
- 编写源代码 (
src/test.js
):
var co = require("co");
var thunkify = require('thunkify');
// 定义一个异步函数
function add(a, b, cb) {
setTimeout(function () {
cb(null, a + b);
}, 2000);
}
// 将 add 函数转换为 thunkify 可以处理的形式
var add2 = thunkify(add);
// 使用 co 运行生成器函数
co(function*() {
var a = yield add2(1, 3);
var b = yield add2(2, 2);
console.log(a, b);
})();
- 转译 ES6 代码:
traceur --dir src dest
这会将 src/test.js
中的 ES6 代码转译到 dest/test.js
。
- 运行转译后的代码:
node run.js
其中 run.js
的内容如下:
require("traceur");
require("./dest/test");
解释:
- 我们使用
thunkify
将普通回调函数转换为生成器函数可以使用的形式。 co
用来运行生成器函数,并处理异步操作。traceur
用于将 ES6 语法转换为 Node.js 可以执行的 ES5 语法。
这样,我们就可以在 Node.js 环境中运行 ES6 代码了。