Почему Angular не нуждается в тире в имени компонента

Я задавался вопросом, почему элементам Polymer требуется тире в имени пользовательских элементов, например <my-component>, в то время как это не обязательно для компонентов Angular, тем более что компоненты Angular также используют ShadowDOM.

** Редактировать ** Кажется, это даже не рекомендуется в Angular.


person Günter Zöchbauer    schedule 17.01.2014    source источник


Ответы (2)


Спецификация HTML позволяет вам использовать неизвестные теги (<tab>, <panel>) без того, чтобы анализатор HTML не подошел. В своих интересах Angular использует это поведение для своих директив, чтобы сделать компоненты похожими на нативные.

Теги без - наследуются от HTMLUnknownElement. Здесь есть хорошее объяснение процесса обновления: HTML5Rocks — Пользовательские элементы — Как элементы обновлен

Поскольку директивы Angular были разработаны до появления спецификации Custom Elements, они не используют -. Это стандарт, который требует, чтобы имена элементов содержали -.

person ebidel    schedule 17.01.2014
comment
Спасибо за ваше объяснение. Я думаю = должно быть -. Должен ли я использовать тире и для угловых элементов, или это не имеет значения для Angular? (Я администратор, я еще не читал связанный документ - начиная только сейчас...) - person Günter Zöchbauer; 18.01.2014

Тире не требуется Angular, поскольку нет технических причин для его требования. Однако во всех крупных проектах, над которыми я работал, все компоненты и директивы префиксируются двумя символами, а затем префиксом тире, например, «ab-tab».

Во-первых, использование тире в именах делает ваш синтаксис совместимым со стандартом Custom Elements, хотя Angular не зависит от спецификации.

Во-вторых, это помогает с организацией. Все стандартные директивы Angular имеют префикс «ng-». Используя ваш собственный префикс, люди, читающие ваш код, смогут быстро различать компоненты из разных библиотек.

person James deBoer    schedule 19.01.2014