nomodule和“ type =” module”对于IE 11的工作方式有所不同

问题描述 投票:0回答:1

我正在测试应用程序中nomoduletype="module"的功能。我使用的chrome仅下载了type="module"标记中的文件,这是预期的。但是,当我在IE 11中对其进行测试时,将其从两个脚本标签下载到我的娱乐文件。

我已附上图片以供参考。请帮助我了解这种行为。

index.html

<meta charset="utf-8">
<title>custom-element demo</title>
<script src="https://unpkg.com/vue"></script>
<script nomodule src="http://localhost:85/email-compose-legacy.min.js"></script>
<script type="module" src="http://localhost:85/email-compose.min.js"></script>

<email-compose-legacy></email-compose-legacy>

network tab in chrome

network tab in IE 11

javascript vue.js internet-explorer-11
1个回答
0
投票

我认为是由于在不同的浏览器中使用了不同的JS引擎。

this article中,我们可以看到nomoduletype="module"属性仅确保脚本是否被执行,而不能确定是否将其下载:

nomodule

此布尔属性设置为指示在支持ES2015模块的浏览器中,不应执行脚本。

module:将代码视为JavaScript模块。

因此,我们只需要确保type="module"脚本不会在IE中被执行,而nomodule脚本将在IE中被执行,而在Chrome中则相反。

返回到JS引擎,Chrome uses V8作为JS引擎,IE and Edge Legacy use Chakra作为JS引擎。您会发现脚本也将同时在Edge Legacy中下载。因此,我认为是不同的JS引擎导致了不同的行为。

© www.soinside.com 2019 - 2024. All rights reserved.