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

Gün*_*uer 16 dart polymer dart-polymer angular-dart

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

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

ebi*_*del 11

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

没有-继承的标签HTMLUnknownElement.这里有一个很好的解释升级过程:HTML5Rocks - 自定义元素 - 如何升级元素

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


Jam*_*oer 5

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

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

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