ES6模块与HTML导入

时间:2014-01-17 03:24:53

标签: ecmascript-harmony web-component

HTML ImportsWeb Components规范的一部分,提供了一种处理Web依赖关系的方法。 ES6模块也做同样的事情,但仅适用于Javascript代码。

关于这两者如何协同工作是否有任何明确性?

编辑:示例:在我最近的一个项目中,我有两个Javascript组件(文件),其中一个依赖于另一个,但任何HTML代码(这是另一个组件)都可以使用的任何一方。因此,当我在HTML中包含依赖脚本时,我也不想包含父脚本(避免手动依赖性处理)。似乎没有明确的方法来实现它,除了将ES6模块与脚本包括混合。我看到的唯一选择是为每个组件维护一个单独的文件,并指定所需的文件和依赖项,例如component.io。

2 个答案:

答案 0 :(得分:7)

Web组件与ES6模块的交互方式尚未最终确定,但至少有两个选项。

ES6的概念为realms。如果您在两个iFrame中使用JavaScript,则两个iFrame可以相互通信并来回传递数据。但他们处于不同的领域。这意味着您可以在一个对象中修改Array.prototype对象,而不会影响另一个对象。每个Web组件很可能都有自己的领域,因此它们不会相互干扰。

每个领域都有一堆全局对象,其中包括(很可能,规范尚未最终确定)Loader对象。您可以创建Loader的新实例并使用它来加载模块。领域中已存在一个,这是默认领域。每个Loader实例都有自己定义的模块列表,因此每个Web组件都可以被赋予它自己的Loader实例。

我不确定webcomponents是否会被赋予不同的Realms或不同的Loader个对象,但不同的Web组件很可能无法相互干扰。

答案 1 :(得分:5)

以上是最新信息:Chrome对所有4个Web组件规范都提供本机支持,而Mozilla announced由于this pending reconciliation与ES6的关系,他们不会提供HTML Imports的实现模块,不会很快得到解决,特别是在这里,Mozilla有什么说法:

  

我们希望曾经的JavaScript模块 - 一个源自的功能   由开发人员社区编写的JavaScript库 - 已发货,   我们看待这个问题的方式会发生变化。我们也有   从盖亚和其他人那里了解到,缺少HTML Imports不是一个   问题,因为功能可以很容易地提供   如果需要,可以填充。

`