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

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

** Изменить ** По-видимому, в Angular не рекомендуется предлагать хорошую практику.

Ответы

Ответ 1

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

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

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

Ответ 2

Черта не требуется Angular, так как нет необходимости в ней. Тем не менее, во всех крупных проектах я работал над префиксами всех компонентов и директив с двумя символами, а затем префиксами штриховки, например "ab-tab".

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

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