[英]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>
当前,浏览器处于不同的实现点:
请随时纠正我或扩展此答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.