我正在测试应用程序中nomodule
和type="module"
的功能。我使用的chrome仅下载了type="module"
标记中的文件,这是预期的。但是,当我在IE 11中对其进行测试时,将其从两个脚本标签下载到我的娱乐文件。
我已附上图片以供参考。请帮助我了解这种行为。
<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>
我认为是由于在不同的浏览器中使用了不同的JS引擎。
从this article中,我们可以看到nomodule
和type="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引擎导致了不同的行为。