1

由于大多数情况下我们使用模块和import语句使用Babel等工具对它们进行转换,因此我对原生 Web 浏览器的实现如何使用所谓的import语句加载外部文件很感兴趣。

模块会在后台使用XmlHttpRequest/加载XmlHttpRequest2吗?

AFAIK,整个标准将编程 API 定义为System全局变量,其中有一些方法System.define可以评估 JavaScript 源代码并将其注册为命名模块。

这是否意味着实际的模块系统实现不会涵盖外部文件模块加载(意味着库/框架或您自己的 vanilla JavaScript 代码应该使用 ? 获取源代码XmlHttpRequest?)

4

1 回答 1

1

WHATWG 正在积极开发一个加载器标准,它将处理浏览器中的加载: http ://whatwg.github.io/loader/

由于这仍在进行中,因此情况可能仍会发生变化。据我所知,没有指定浏览器加载文件的确切方式,但它很可能会使用API Fetch基于 Promise 的 XmlHttpRequest2 替代品)。

最后,您应该能够使用带有脚本标签的模块语法,并且浏览器(或任何您的 JS 环境)将处理加载:

<script type="module">
  import x from 'y';
  import a from 'b';

  ...
</script>

或者

<script type="module" src="y.js"></script>

目前,浏览器处于不同的实现点:

  • IE/Edge:正在考虑中
  • 火狐:进行中
  • 铬:进行中
  • Webkit:元错误

请随时纠正我或扩展此答案。

于 2016-03-09T10:17:09.657 回答