我想知道为什么Polymer元素需要像<my-component>
这样的自定义元素名称中的破折号,而Angular组件不需要这样,特别是Angular组件也使用ShadowDOM。
**编辑** 它似乎甚至没有被建议在Angular中做好。
答案 0 :(得分:11)
HTML规范允许您在不使用HTML解析器的情况下使用未知标记(<tab>
,<panel>
)。为了他们的利益,Angular将这种行为用于指令,使组件像本机一样。
没有-
的标记继承自HTMLUnknownElement
。这里有一个很好的解释升级过程:HTML5Rocks - Custom Elements - How elements are upgraded
由于Angular指令是在自定义元素规范存在之前的一段时间内设计的,因此它们不使用-
。这是要求元素名称包含-
的标准。
答案 1 :(得分:5)
Angular不需要破折号,因为没有技术理由要求它。但是,我所做的所有大型项目都在前缀所有组件和指令前加上两个字符,然后是短划线前缀,例如“ab-tab”。
首先,在名称中使用短划线会使您的语法与自定义元素标准兼容,尽管Angular不依赖于规范。
其次,它有助于组织。标准Angular指令都以'ng-'为前缀。通过使用您自己的前缀,阅读代码的人将能够快速区分不同库中的组件。