12

HTML 导入Web 组件规范的一部分,并提供了一种处理 Web 依赖关系的方法。ES6 模块也做同样的事情,但只是针对 Javascript 代码。

两者将如何协同工作有明确的说明吗?

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

4

2 回答 2

7

Web 组件如何与 ES6 模块交互尚未最终确定,但至少有两种选择。

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

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

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

于 2014-03-18T15:04:31.937 回答
5

这是最新的:Chrome 原生支持所有 4 个 Web 组件规范,而 Mozilla宣布他们不会发布 HTML Imports 的实现,正是因为与 ES6 模块的未决协调,这不会很快得到解决,特别是因为这是 Mozilla 不得不说的:

我们预计,一旦 JavaScript 模块——一种源自开发者社区编写的 JavaScript 库的特性——发布,我们看待这个问题的方式就会改变。我们还从 Gaia 和其他人那里了解到,缺少 HTML 导入不是问题,因为如果需要,可以通过 polyfill 轻松提供该功能。

`

于 2015-05-29T20:49:24.597 回答