【问题标题】:es6 modules native supportes6 模块原生支持
【发布时间】:2016-08-25 11:40:31
【问题描述】:

我了解 ES6 模块规范,问题是关于它的支持。 AFAIK,没有浏览器可以本机实现此功能(请参阅 浏览器兼容性 here)。对此有几个问题:

  • 显然,ES6 模块是一个 ES6 特性。当我查看kangax compatibility table 时,我根本没有看到这样的行(对于 ES6 模块),这是为什么呢?毕竟这是一个 ES6 特性...
  • 因此,目前使用 ES6 的唯一方法是使用构建工具,例如 babel、browserify 或任何其他替代品,对吧?
  • 如何获取模块,当它们本机支持时 - 作为来自浏览器的异步 AJAX 调用?

【问题讨论】:

  • 第一个问题无法回答,尤其是在 SO...
  • 我建议将 Webpack 与 Babel 结合使用。 Webpack 将回答第二个和第三个问题。

标签: javascript ecmascript-6 es6-module-loader


【解决方案1】:

显然,ES6 模块是一个 ES6 特性。当我查看 kangax 兼容性表时,我根本没有看到这样的行(对于 ES6 模块),这是为什么呢?

在 kangax 的 github 上有 an issue being discussed

目前使用 ES6 的唯一方法是使用构建工具,例如 babel、browserify 或任何其他替代品,对吧?

没有。 Guy Bedford 还提供了一个 polyfill,地址为 http://github.com/ModuleLoader/browser-es-module-loader

并且已经有本地实现它的 Edge 预览版。

如何获取模块,当它们本机支持时 - 作为来自浏览器的异步 AJAX 调用?

是的,但不完全是:它们将在第一次使用时通过调用导入库上的对象(函数或属性)来获取。

【讨论】:

  • 谢谢!您证明了在 SO 上回答这样的问题 可能的 :) 完美! PS Guy Bredford 的 polyfill 是否准确模拟了 ES6 模块在原生支持时应该如何工作(在执行方面,而不是语法方面)?
  • @ducin 我不确定,但我认为这不可能。我猜它更像 ajax 异步。这可以通过开发工具进行检查。
【解决方案2】:

原生模块在以下版本的浏览器中可用:

  • Safari 10.1
  • Chrome Canary 60 – 实验性 Web 平台背后 chrome:flags 中的标志。
  • Firefox 54 - 在 about:config 中的 dom.moduleScripts.enabled 设置后面。
  • 边缘 15 – 后面 about:flags 中的 Experimental JavaScript Features 设置。

source

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 2020-06-07
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    • 2017-07-08
    相关资源
    最近更新 更多