为什么Angular在组件名称中不需要破折号

时间:2014-01-17 09:29:30

标签: dart dart-polymer polymer angular-dart

我想知道为什么Polymer元素需要像<my-component>这样的自定义元素名称中的破折号,而Angular组件不需要这样,特别是Angular组件也使用ShadowDOM。

**编辑** 它似乎甚至没有被建议在Angular中做好。

2 个答案:

答案 0 :(得分:11)

HTML规范允许您在不使用HTML解析器的情况下使用未知标记(<tab><panel>)。为了他们的利益,Angular将这种行为用于指令,使组件像本机一样。

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

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

答案 1 :(得分:5)

Angular不需要破折号,因为没有技术理由要求它。但是,我所做的所有大型项目都在前缀所有组件和指令前加上两个字符,然后是短划线前缀,例如“ab-tab”。

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

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