尝试测试ES6 Spread语法,但是webpack给我一个错误。
的package.json
"devDependencies": {
"babel-core": "^6.18.2",
"babel-loader": "^6.2.8",
"babel-preset-latest": "^6.16.0",
"babel-preset-react": "^6.16.0",
"webpack": "^1.12.13"
}
webpack.config.js
loaders: [
{
loader: 'babel-loader',
query: {
presets: ['react', 'latest']
},
test: /\.jsx?$/,
exclude: /(node_modules|bower_components)/
}
]
app.jsx(webpack条目文件)
var objOne = {name: 'Jussi', location: 'Interwebs'};
var objTwo = {
age: 28,
...objOne
};
控制台
webpack
Hash: 2a82a67f90f9aa05ab4a
Version: webpack 1.12.13
Time: 1409ms
+ 1 hidden modules
ERROR in ./app/app.jsx
Module build failed: SyntaxError: Unexpected token (7:1)
5 | var objTwo = {
6 | age: 28,
> 7 | ...objOne
| ^
这个省略号表示法应该有效,对吗?我在哪里错了?
答案 0 :(得分:4)
这不是有效的ES2015(或ES2016)代码:
var objOne = {name: 'Jussi', location: 'Interwebs'};
var objTwo = {
age: 28,
...objOne
};
它依赖于object spread properties,这是第3阶段提案(截至2016年11月撰写)。 (数组传播是ES2015的一部分,但不是对象传播。)这意味着该功能已完全定义并充分展现,规范文本已准备就绪,但它正在等待实现和实现反馈。 (the process document中的详细信息。)所以它很快就可以很快进入规范(可能不是ES2017,尽管它可能仍然可能取决于实现的程度,但几乎可以肯定ES2018)。
Babel和其他类似的转发器将使用相关选项集进行转换(例如,对于Babel而言,它是stage-3
preset; example)。