使用 Polymer 元素进行 html 导入的正确方法?
The right way to do html imports with Polymer elements?
说,我有元素 A 和 B。B 中的导入是:
<!-- Imports in B -->
<link rel="import" href="../polymer/polymer.html">
<link rel="import" href="../another-element/another-element.html">
现在想在A中使用B,请问"right"导入B的方法是什么? A 应该像这样导入 B 吗?
<!-- Imports in A: Method 1 -->
<link rel="import" href="../element-b/element-b.html">
或者 A 是否也应该像下面这样导入 B 使用的所有导入?
<!-- Imports in A: Method 2 -->
<link rel="import" href="../polymer/polymer.html">
<link rel="import" href="../another-element/another-element.html">
<link rel="import" href="../element-b/element-b.html">
如果 Google 自己的聚合物元素可以提供任何指导,答案似乎是方法 2,即导入所有依赖的 html。但如果是这样的话,Polymer/WebComponents 中的 "import" 语法似乎没有明显的原因就破坏了封装。例如,这是来自 Polymer 的 "paper-dropdown-menu" 元素:
https://github.com/PolymerElements/paper-dropdown-menu/blob/master/paper-dropdown-menu.html
它导入 "paper-input.html",它有自己的导入:
https://github.com/PolymerElements/paper-input/blob/master/paper-input.html
两个元素中都使用了以下 2 个导入:
<link rel="import" href="../polymer/polymer.html">
<link rel="import" href="../iron-form-element-behavior/iron-form-element-behavior.html">
如果paper-dropdown-menu.html已经导入了paper-input.html,为什么paper-dropdown-menu还要导入polymer.html和iron-form-element?这样做的问题是,在编写包含许多元素的应用程序时,导入可能会很快失控。是的,我知道 Vulcanize。但我看不出这对创建或使用元素时的开发过程有何帮助。此外,封装意味着 A 不需要知道上面示例中 B 的内部部分。或者 Polymer/Webcomponent 真的是说组件中的 html 导入是该组件的 "public interface" 的一部分?
只需导入您直接依赖的元素即可。您可以忽略传递依赖性,因为它们无论如何都被导入到您直接导入的元素中。
此外,每个元素都应导入 <link rel="import" href="../polymer/polymer.html">
.
方法 1 是“更好”的方法。每个聚合物元素都应该捆绑自己的依赖项,因此它可以在使用时自行运行。
方法 2 不太好,您将 re-importing 两次导入元素 B,这会浪费带宽,尤其是当您不使用检查函数(如聚合物内置 importHref)时如果在再次获取之前已经导入了一个元素。
说,我有元素 A 和 B。B 中的导入是:
<!-- Imports in B -->
<link rel="import" href="../polymer/polymer.html">
<link rel="import" href="../another-element/another-element.html">
现在想在A中使用B,请问"right"导入B的方法是什么? A 应该像这样导入 B 吗?
<!-- Imports in A: Method 1 -->
<link rel="import" href="../element-b/element-b.html">
或者 A 是否也应该像下面这样导入 B 使用的所有导入?
<!-- Imports in A: Method 2 -->
<link rel="import" href="../polymer/polymer.html">
<link rel="import" href="../another-element/another-element.html">
<link rel="import" href="../element-b/element-b.html">
如果 Google 自己的聚合物元素可以提供任何指导,答案似乎是方法 2,即导入所有依赖的 html。但如果是这样的话,Polymer/WebComponents 中的 "import" 语法似乎没有明显的原因就破坏了封装。例如,这是来自 Polymer 的 "paper-dropdown-menu" 元素:
https://github.com/PolymerElements/paper-dropdown-menu/blob/master/paper-dropdown-menu.html
它导入 "paper-input.html",它有自己的导入:
https://github.com/PolymerElements/paper-input/blob/master/paper-input.html
两个元素中都使用了以下 2 个导入:
<link rel="import" href="../polymer/polymer.html">
<link rel="import" href="../iron-form-element-behavior/iron-form-element-behavior.html">
如果paper-dropdown-menu.html已经导入了paper-input.html,为什么paper-dropdown-menu还要导入polymer.html和iron-form-element?这样做的问题是,在编写包含许多元素的应用程序时,导入可能会很快失控。是的,我知道 Vulcanize。但我看不出这对创建或使用元素时的开发过程有何帮助。此外,封装意味着 A 不需要知道上面示例中 B 的内部部分。或者 Polymer/Webcomponent 真的是说组件中的 html 导入是该组件的 "public interface" 的一部分?
只需导入您直接依赖的元素即可。您可以忽略传递依赖性,因为它们无论如何都被导入到您直接导入的元素中。
此外,每个元素都应导入 <link rel="import" href="../polymer/polymer.html">
.
方法 1 是“更好”的方法。每个聚合物元素都应该捆绑自己的依赖项,因此它可以在使用时自行运行。
方法 2 不太好,您将 re-importing 两次导入元素 B,这会浪费带宽,尤其是当您不使用检查函数(如聚合物内置 importHref)时如果在再次获取之前已经导入了一个元素。