【发布时间】:2016-10-28 15:45:31
【问题描述】:
简单而且可能很愚蠢的问题。
难道我们在 ES6 中已经有了模块吗?但我们再次使用模块捆绑器。都是因为配套问题吗?他们给了我们更多的选择还是什么?
谢谢。
【问题讨论】:
标签: javascript module webpack amd commonjs
简单而且可能很愚蠢的问题。
难道我们在 ES6 中已经有了模块吗?但我们再次使用模块捆绑器。都是因为配套问题吗?他们给了我们更多的选择还是什么?
谢谢。
【问题讨论】:
标签: javascript module webpack amd commonjs
当前的 JS 运行时不支持 ES6 模块。这似乎令人困惑,因为它们在规范中,但它们只是被定义并尚未实现(Edge 是唯一支持任何支持的浏览器,per MDN)。
因为我们有这种花哨的新语法但不支持浏览器(或节点),所以现在需要一些工具来填充它。进入像 webpack 这样的打包工具,他们了解 ES6 模块并提供自己的 System 实现及其导入功能。
这与 lodash(和下划线)对函数式数组方法所做的没有什么不同,在大多数浏览器实现这些方法之前,polyfill 发生的时间有所不同。因为模块加载必须在脚本运行之前发生,所以捆绑器必须在脚本到达客户端之前运行。
【讨论】:
.babelrc。 Webpack 和朋友们会很高兴地包装任何这些模块格式(或它们的混合)并为您解决问题。除了结合 HTTP 请求的好处和捆绑的常见原因之外。