Почему Angular не нужен тире в имени компонента
Я задавался вопросом, почему элементам Polymer нужна черта в названии пользовательских элементов, например <my-component>
в то время как это не обязательно для угловых компонентов, тем более что угловые компоненты также используют ShadowDOM.
** Редактировать ** Кажется, даже не рекомендуется хорошая практика в Angular.
2 ответа
Спецификация HTML позволяет использовать неизвестные теги (<tab>
, <panel>
) без парсера HTML. В своих интересах Angular использует это поведение в своих директивах, чтобы сделать компоненты как родные.
Теги, которые не имеют -
наследовать от HTMLUnknownElement
, Здесь есть хорошее объяснение процесса обновления: HTML5Rocks - Пользовательские элементы - Как обновляются элементы
Поскольку угловые директивы были разработаны за время до появления спецификации пользовательских элементов, они не используют -
, Это стандарт, который требует, чтобы имена элементов содержали -
,
В Angular не требуется тире, поскольку нет технических причин требовать этого. Тем не менее, во всех крупных проектах я работал с префиксом всех компонентов и директив с двумя символами, а затем с префиксом тире, например, "ab-tab".
Во-первых, использование тире в именах делает ваш синтаксис совместимым со стандартом пользовательских элементов, хотя Angular не зависит от спецификации.
Во-вторых, это помогает с организацией. Стандартные угловые директивы имеют префикс "ng-". Используя ваш собственный префикс, люди, читающие ваш код, смогут быстро отличить компоненты от разных библиотек.