为什么 Vue 的 webpack 模板不使用 polyfill 也能在 IE 浏览器上使用 assign 等 ES6+ 方法

shoyuf
  • 649
  1. 为什么 Vue 的 Webpack 模板不使用 polyfill 也能在 IE 浏览器上使用 Object.assign 等 ES6+ 方法。而且在模板的package.json和相关配置没有看到babel-polyfill
  2. babel-loader 不能根据我的代码中ES6使用情况自动添加相关的polyfill吗?感觉使用我的配置是根据browserlist 添加的polyfill
  3. 当我自己使用 Webpack4 的时候,如果需要使 IE 浏览器上能正确使用 ES6+ 方法。需要在入口文件添加一行import 'babel-polyfill'

附上我的webpack配置:

'use strict';
const path = require('path');
module.exports = {
  mode: 'development',
  entry: {
    index: path.join(__dirname, './index.js'),
  },
  output: {
    filename: '[name].bundle.js',
  },
  devtool: 'cheap-module-eval-source-map',
  devServer: {
    contentBase: path.resolve(__dirname, './'),
    port: 8000,
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
          options: {
            cacheDirectory: true,
            presets: [[ 'env', {
              useBuiltIns: true,
            }]],
            plugins: [ 'transform-runtime' ],
          },
        },
      },
    ],
  },
};

回复
阅读 2.1k
2 个回答

babel 只转语法 ,不转api,新的api需要引入babel-polyfill

  1. Object.assign 不需要 babel-polyfill
  2. babel 是可以做到。 但问题是, 你是否需要转化呢? 如果你的目标浏览器就是最新浏览器就好了,它是不是就没有必要转化了?
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏