gpt4 book ai didi

javascript - whatwg 的 Loader 规范、动态导入建议和 <script type ='module' > 之间有什么关系?

转载 作者:行者123 更新时间:2023-11-29 22:45:11 28 4
gpt4 key购买 nike

以上三者有什么关系?到目前为止,这是我的理解:ES6 spec定义 ES6 modules 的语法,但它没有指定如何加载这些模块。在浏览器环境中使用它们的唯一方法是通过模块脚本。还有一个动态导入运算符提案,可以让您有条件地从脚本和模块脚本中加载模块。那么,Loader 规范是否说明了浏览器如何在后台加载模块脚本?或者也许它说的是 import()运算符(operator)在不同环境中的行为?或者它是其他与上述两者无关的东西?如果加载器规范说明如何 import()在不同的环境中表现,这与浏览器加载模块的方式有何关系 <script type="module"> ?是否有两个关于模块加载如何工作的规范,基于它是由动态导入运算符还是 <script type="module"> 决定的? ?

最佳答案

你基本上是正确的。 ECMAScript 标准没有指定如何解析模块名称:由执行环境来定义它。这首先在 ECMA-262 6th Ed., §15.2.1.17 中指定;以后的规范包含类似的语言。

在浏览器中,import 中的模块引用语句将被视为相对 URI 并直接加载,假设它们以 / 开头, ./../ (这是为了保持向前兼容性)。此行为在 the HTML living standard 中指定(WHATWG HTML LS 2019-11-26 §8.1.3.8)。

<script type="module"> 中包含(或引用)的脚本标记被解析为一个模块,并在整个文档标记被解析后执行。与正常的 <script defer> 没有太大区别, 除了 importexport声明现在可用。 <script type="module">在 HTML 规范 ( WHATWG HTML LS 2019-11-26 §4.12.1 ) 中也有描述

import()伪函数返回一个 promise ,该 promise 解析为指定为其操作数的模块。模块名称的解析方式与 import 中的完全相同陈述。在撰写本文时,它尚未标准化,但有望成为 ECMA-262 第 11 版的一部分。 (ECMAScript 2020)。您可以阅读 draft specification或查看 proposal repository .

WHATWG Loader是一个废弃的规范,它也涵盖了动态导入,并且还提供了更高级的功能,例如外国脚本的即时翻译或为“裸”模块名称分配含义(目前不可用,如上所述)。它仅作为不完整的规范存在,据我所知从未实际实现过。

关于javascript - whatwg 的 Loader 规范、动态导入建议和 &lt;script type ='module' > 之间有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58911190/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com