我添加了
以及babel-plugin-syntax-dynamic-import
我的插件使其工作,现在一切正常,但它仍然不会加载ie11,无法找出原因?
webpack.config:
const webpack = require('webpack');
const pkg = require('./package.json');
const path = require('path');
const debug = process.env.NODE_ENV !== 'prod';
module.exports = {
context: __dirname,
devtool: 'sourc-emap',
entry: {
app: `${pkg.paths.src.js}index.js`,
},
output: {
path: path.resolve(__dirname) + pkg.paths.src.assets,
filename: '[name].bundle.min.js',
publicPath: '/assets/',
},
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/,
},
{
test: /\.js$/,
loader: 'eslint-loader',
exclude: /node_modules/,
},
],
},
plugins: debug
? [
]
: [
new webpack.optimize.UglifyJsPlugin({ mangle: false, sourcemap: false }),
// new webpack2.ProvidePlugin({ $: 'jquery', jQuery: 'jquery' }),
],
};
.babelrc:
{
"presets": [
["es2015"],
["env", {
"targets": {
"browsers": ["last 2 versions", "safari >= 7", "ie 10-11"]
}
}]
],
"plugins": ["babel-plugin-syntax-dynamic-import",
"babel-plugin-add-module-exports"
]
}
我的条目index.js:
const jsLoader = document.querySelector('.js-loader');
if (jsLoader) {
import('./modules/loader.js')
.then(module => module.loader);
}
和模块loader.js
const jsLoader = document.querySelector('.js-loader');
// hide loader on pageload
window.onload = function init() {
jsLoader.style.display = 'none';
};
export default jsLoader;
它只是一个简单的加载器,应该在加载页面后隐藏,只是为了弄清楚它是否适用于旧浏览器
答案 0 :(得分:1)
我认为我不必使用babel加载程序来转发es2015代码,因为webpack 2会这样做
webpack 2 支持es2015 模块语法,webpack 2可以成功解析开箱即用的es2015语言功能。但是,这并不能保证您的浏览器,也不会保证webpack 转换模块功能。
在这种情况下,我们建议您使用babel预设babel-preset-env
。这将允许您指定要支持的浏览器,然后利用babel和babel-loader仅转换本机不支持的更改。