【问题标题】:Why to use module bundlers over ES6 module?为什么在 ES6 模块上使用模块捆绑器?
【发布时间】:2016-10-28 15:45:31
【问题描述】:

简单而且可能很愚蠢的问题。
难道我们在 ES6 中已经有了模块吗?但我们再次使用模块捆绑器。都是因为配套问题吗?他们给了我们更多的选择还是什么?
谢谢。

【问题讨论】:

    标签: javascript module webpack amd commonjs


    【解决方案1】:

    当前的 JS 运行时不支持 ES6 模块。这似乎令人困惑,因为它们在规范中,但它们只是被定义并尚未实现(Edge 是唯一支持任何支持的浏览器,per MDN)。

    因为我们有这种花哨的新语法但不支持浏览器(或节点),所以现在需要一些工具来填充它。进入像 webpack 这样的打包工具,他们了解 ES6 模块并提供自己的 System 实现及其导入功能。

    这与 lodash(和下划线)对函数式数组方法所做的没有什么不同,在大多数浏览器实现这些方法之前,polyfill 发生的时间有所不同。因为模块加载必须在脚本运行之前发生,所以捆绑器必须在脚本到达客户端之前运行。

    【讨论】:

    • 所以我们有 Babel 它不传输模型代码?这样我们就可以使用该语法。
    • Babel 可以保留 ES6 模块原样或将它们转换为 CommonJS 要求或 AMD 模块,具体取决于您的 .babelrc。 Webpack 和朋友们会很高兴地包装任何这些模块格式(或它们的混合)并为您解决问题。除了结合 HTTP 请求的好处和捆绑的常见原因之外。
    猜你喜欢
    • 2018-10-24
    • 2015-07-31
    • 2017-07-20
    • 2015-07-23
    • 2017-03-13
    • 2017-10-23
    • 2017-06-20
    • 1970-01-01
    • 2017-03-23
    相关资源
    最近更新 更多