繁体   English   中英

通过import语句加载的ECMA-Script 2015(及更高版本)模块实际上在后台如何工作?

[英]How actually ECMA-Script 2015 (and above) module loading through import statement works behind the scenes?

由于大多数情况下,我们使用模块并通过Babel之类的工具import 转译import语句,所以我对本机Web浏览器的实现将如何使用所谓的import语句加载外部文件很感兴趣。

可以在XmlHttpRequest使用XmlHttpRequest / XmlHttpRequest2加载模块吗?

整个标准AFAIK将一个程序化API定义为System全局变量,其中存在诸如System.define方法来评估JavaScript源代码并将其注册为命名模块。

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

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

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

最后,您应该能够将模块语法与脚本标签一起使用,并且浏览器(或您的JS环境是什么)将处理加载:

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

  ...
</script>

要么

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

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

  • IE / Edge:正在考虑中
  • Firefox:进行中
  • Chrome:正在进行中
  • Webkit:元错误

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM