我试图使用babel来编译包含es6 promises的文件。我已经安装了babel-cli,babel-preset-es2015,babel-plugin-es6-promise。
我的.babelrc配置是:
{
"presets": ["es2015"],
"plugins": ["es6-promise"]
}
我在里面用require()编译了js文件,但我根本不想使用require。
今天是否有可能在前端使用es6承诺而不需要js?
请提供任何链接到es6 promises实施样本与babel(或甚至与babel + require,因为我不能要求js工作)
ps:不要使用网络包。
答案 0 :(得分:4)
今天是否有可能在前端使用es6 promises而不需要js?
在最新的Chrome / Firefox / Safari / Edge中,Promise为already supported natively。
如果您正在寻找旧的浏览器支持,没有Babel的简单方法就是使用polyfill库。
以下是具有spec:
指定的确切行为的库以下是一些额外的自定义行为:
当然,上面只是一些比较流行的,但是你可以通过研究找到很多其他的。
如果您确实想要使用其他ES6功能,特别是在旧版浏览器上,您可以继续添加polyfill,但在这一点上,使用Babel及其env preset可能会更容易,面向未来。 / p>
请提供任何链接到es6 promises实施样本与babel(或甚至与babel + require,因为我不能要求js工作)
babel website's setup描述了如何在您能想到的任何环境中使用它。如果webpack
太重而无法满足您的需求,我建议您using gulp,这里是thorough guide on how
答案 1 :(得分:2)
Babel本身只是一个转换器,它从ES6转换为ES5,没有别的。由于ES6包含模块,可用于以下导入:
import Awesome from './Awesome'
Babel会将这些内容转换为require
语句,但不关心实际需求。因此,您需要任何实现AMD样式要求的框架,如Browserify或类似的东西。 Webpack也会处理它,因此如果您使用Webpack + Babel,所有必需的代码都将可用,并且您无法通过新的import
语句使用ES6模块(以及Promises)。 / p>
我正在使用这样的webpack.config.js
:
module.exports = {
entry: ['babel-polyfill', './js/main.js'],
output: {
path: './bin/js',
filename: 'main.js',
},
devtool: 'source-map',
module: {
loaders: [{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader'
}]
}
}
和.babelrc
之类的:
{
"presets": [ "es2015", "stage-3" ],
"plugins": [
"external-helpers",
"transform-async-to-generator",
"transform-runtime"
]
}
在我开始使用Webpack之前,我使用了Gulp和browserify,首先编译而不是捆绑,但是使用webpack进行设置要简单得多,所以我决定使用它......
答案 2 :(得分:-4)
Webpack + babel - 前面。 node.js 5+版本/ babel-register for node.js