英语不是我的母语,请原谅输入错误。
NodeJS LTS现在是4.x和6.x,它是ES6语法的一部分,仅在6.x,node.green中受支持。
我有一个后端Node项目现在需要支持Node 4.x版本,但是我必须使用一些仅在6.x版本中工作的语法。所以我用preset-es2015
介绍了Babel。但是通过这个预设,Babel从ES6转换为ES5。
ES6部分语法,如const
,let
性能高于var(这是一个假设,实际情况肯定不是那么简单)。
我的代码在节点6.x的99%或节点4.x的57%的ES6支持上运行,实际上不需要将所有代码降级到ES5。
所以我想知道如果支持NodeJS,Babel不会将ES6语法转换为ES5。
此外,Babel是否支持检测当前操作环境的代码支持并智能地转换它?
谢谢。
更新:babel-preset-env
是我想要的。
答案 0 :(得分:2)
babel-preset-env
可让您定位特定的节点(或浏览器)版本。即该版本支持的功能不会被转换。例如:
{
"presets": [
["env", {
"targets": {
"node": 4
}
}]
]
}
此外,Babel是否支持检测当前操作环境的代码支持并智能地转换它?
在目标环境中执行代码之前,
通常离线,因此实际上不可能。答案 1 :(得分:0)
如果要将ES6编译为ES5,则需要安装Babel ES2015预设。
npm install babel-preset-es2015
然后您需要启用此预设。启用此ES6到ES5编译的一种方法是使用babel-loader查询字符串:
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel-loader?presets[]=es2015'
}
]
}
或查询选项:
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel-loader',
query: {
presets: ['es2015']
}
}
]
}