如果我在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'
}
};
答案 0 :(得分:2)
这是否意味着我可以使用ES6模块,并且由于webpack的转换,它们也适用于不支持ES6模块的旧浏览器?
这是Webpack的目的之一。
这个转型webpack和那个babel之间的区别是什么?
Webpack是一个捆绑包。巴贝尔是一个转录者。他们应该一起使用。 Babel transform-es2015-modules-commonjs
转换将ES模块转换为CommonJS模块。 Node.js支持CommonJS模块,但浏览器不支持。
在旧版浏览器中使用babel或webpack有关ES6模块兼容性的优点/缺点是什么?
优点是您可以在旧版浏览器中使用ES模块。缺点是Webpack可能会引入一些限制,例如如何处理循环依赖。