HTML Imports是
Web Components规范的一部分,并提供了一种处理网络依赖关系的方法. ES6模块也做同样的事情,只是为了Javascript代码.
这两个人如何共同合作有什么清晰度吗?@H_403_3@
编辑:一个例子:在我最近的一个项目中,我有两个Javascript组件(文件),其中一个取决于另一个,但任何HTML代码(这是另一个组件)可以使用它们中的任何一个.所以当我在HTML中包含依赖脚本时,我也不想包括父脚本(避免手工依赖关系处理).似乎没有明确的方法来做,除了混合ES6模块与脚本包括.我看到的唯一选项是为每个组件维护单独的文件,并指定必需的文件和依赖项,例如component.io.@H_403_3@
解决方法
Web组件如何与ES6模块交互尚未完成,但至少有两个选项.
ES6具有realms的概念.如果您在两个iFrames中有JavaScript,则两个iFrames可以相互通信并传递数据.但他们在不同的领域.这意味着您可以修改Array.prototype对象而不影响其他对象.每个Web组件最有可能拥有自己的领域,因此它们不会相互干扰.@H_403_3@
每个领域都有一堆全局对象,其中包含(很可能,规范尚未定稿)Loader对象.您可以创建一个新的Loader实例并使用它来加载模块.在这个领域已经存在一个,这是默认的.每个Loader实例都有自己的定义模块列表,因此每个Web组件都可以被赋予它自己的Loader实例.@H_403_3@
我不知道网络组件是否被赋予不同的域或不同的Loader对象,但是不同的Web组件很可能无法相互干扰.@H_403_3@