webpack是否使ES6模块与ES5浏览器兼容?

时间:2018-06-01 11:17:38

标签: javascript webpack ecmascript-6 babeljs es6-modules

如果我在JS文件中使用 ES6 import ,如:

import { tempates } from "./templates.js";

webpack将转换为:

__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _templates_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./templates.js */ "./static/js/templates.js");

这是否意味着我可以使用ES6模块由于webpack的转换也可以在旧浏览器中使用 支持ES6模块?

如果是:转换webpack babel 之间的差异是什么呢?例如,描述了巴贝尔的变换。这里: https://babeljs.io/docs/plugins/transform-es2015-modules-commonjs/

旧版浏览器中 ES6模块兼容性使用babel或webpack 优点/缺点是什么?

我使用的是webpack 4.10.2版本,这是我的webpack配置:

var path = require('path');

module.exports = {
    mode: 'development',
    entry: './static/js/mainScript.js',
    output: {
        path: path.resolve(__dirname, 'build'),
        filename: 'asterics-grid.bundle.js'
    }
};

1 个答案:

答案 0 :(得分:2)

  

这是否意味着我可以使用ES6模块,并且由于webpack的转换,它们也适用于不支持ES6模块的旧浏览器?

这是Webpack的目的之一。

  

这个转型webpack和那个babel之间的区别是什么?

Webpack是一个捆绑包。巴贝尔是一个转录者。他们应该一起使用。 Babel transform-es2015-modules-commonjs转换将ES模块转换为CommonJS模块。 Node.js支持CommonJS模块,但浏览器不支持。

  

在旧版浏览器中使用babel或webpack有关ES6模块兼容性的优点/缺点是什么?

优点是您可以在旧版浏览器中使用ES模块。缺点是Webpack可能会引入一些限制,例如如何处理循环依赖。