16

我想知道为什么 Polymer 元素需要在自定义元素名称中使用破折号,<my-component>而对于 Angular 组件来说这不是必需的,尤其是当 Angular 组件也使用 ShadowDOM 时。

** 编辑** 在 Angular 中,它甚至似乎都不是建议好的做法。

4

2 回答 2

10

HTML 规范允许您使用未知标签 ( <tab>, <panel>) 而不会导致 HTML 解析器出错。为了他们的利益,Angular 将这种行为用于他们的指令,以使组件像本机一样。

没有-继承自的标签HTMLUnknownElement。这里对升级过程有一个很好的解释:HTML5Rocks - Custom Elements - How elements are upgrade

由于 Angular 指令是在自定义元素规范存在之前设计的,因此它们不使用-. 这是要求元素名称包含-.

于 2014-01-17T20:59:29.967 回答
4

Angular 不需要破折号,因为没有技术原因需要它。然而,我从事的所有大型项目都使用两个字符和破折号前缀作为所有组件和指令的前缀,例如“ab-tab”。

首先,在名称中使用破折号使您的语法与自定义元素标准兼容,尽管 Angular 不依赖于规范。

其次,它有助于组织。标准 Angular 指令都以 'ng-' 为前缀。通过使用您自己的前缀,阅读您的代码的人将能够快速区分来自不同库的组件。

于 2014-01-19T22:46:52.047 回答