对于客户端代码,你正在做正确的事情。使用babelify
将其转换并发送到客户端。
对于服务器端代码,我会使用babel-cli进行常规构建。
根据http://babeljs.io/docs/setup/#babel_register的说明,babel-register
不适合生产环境使用——因为要求钩子主要用于简单的情况。
对于 Babel 6+
从Babel 6开始,默认情况下不包含任何转换。因此,让我们首先安装babel-cli
和babel-preset-es2015
。
$ npm install --save-dev babel-cli babel-preset-es2015
在你的.babelrc
文件中添加一个转换 - 这是我们上面下载的prest模块。查看预设的完整列表,看看哪个(些)最适合你。
{
"presets": ["es2015"]
}
在你的
package.json
文件中添加一个
build
脚本。在
src
下放置输入文件,而
build
目录则是转换后的输出文件。
"scripts": {
"build": "babel src -d build"
}
那就开始建造吧!
$ npm run build
然后运行你的代码。此时,你应该执行 build
目录中的文件。
$ npm start
对于 Babel <= 5,只需使用 require 钩子即可。
require("babel/register");
所有需要使用扩展名为.es6, .es, .jsx 和 .js的node模块都将被Babel转换。此外,polyfill也会自动引入。
你可以继续保留ES6源代码,并使用node server.js
来执行它们。
根据您的评论,似乎您遇到了一些问题。请特别注意上面黄色部分的内容。您的第一个文件只能是ES5,由node本身运行。所有后续需要的模块将通过Babel进行转换...
以下是典型设置的示例:
server.js
require("babel/register");
var app = require("./app.js");
app.js
// this file will be loaded through babel
// you can now use ES6 here and in every other include
点燃它!
$ node server.js
require("babel/register")
一行代码,在运行node server.js
命令时出现了错误:Unexpected reserved word: import ...
,因此看起来这个方法并没有起作用。 - svnm