簡體   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