比方说,我有这样的HTML:
<outer-element>
<inner-element></inner-element>
</outer-element>
inner-element
和outer-element
从LitElement延伸自定义元素。
是否有规定的顺序包括定义这些元素融入我的脚本文件?
例如 A.
import './inner-element.js';
import './outer-element.js';
VS B.
import './outer-element.js';
import './inner-element.js';
我注意到,包容的顺序确定的元素呈现的顺序。也就是说,A导致render()
被称为在所述内,然后将外。而B引导到render()
正在呼吁外,然后内。
一个活生生的例子,在那里你可以切换顺序和看到的结果在控制台提供here。
我的(幼稚)的直觉是,为了渲染将由HTML页面的结构来决定。相反,它似乎是确定通过的Javascript的顺序包括。这使我想知道:是正确的顺序?
从HTML解析器立场来看,认为是正确的顺序应该是元素(你的直觉)的出场顺序。
但是从JavaScript执行的观点......这取决于作者和开发者的意图。
一般情况下,除非你是作者和自定义元素的用户都,你可以不知道自定义元素是否之前或解析之后定义,也没有在这2个不同的元素定义的顺序。
因此,作为一个Web组件的作者,你应该尝试开发其渲染是不依赖于定义的顺序(尽可能)自定义元素。否则,让它在文件中明确。
作为一个Web部件消费者/用户,你应该知道(你知道)的异步下载脚本和模块的延迟确定指标的副作用。