Я пытался понять, почему нам все еще нужно использовать шаблоны HTML в Angular2 против чего-то вроде JSX. Мне показалось, что JSX обеспечивает превосходную настройку: напишите весь свой компонент, используя возможности JavaScript (циклы Javascript вместо *ngFor в шаблоне). С таким настроем я отправился на Ng-conf, и после разговора с Брэдом Грином мне открылись преимущества использования HTML-шаблонов.
Во многом мои личные предпочтения не позволяли мне увидеть некоторые ключевые преимущества шаблонов: разделение задач, разделение статических и динамических частей, использование существующих знаний и многое другое.
Разделение ответственности
Шаблон HTML должен беспокоиться только о нескольких вещах и может быть легко заменен другим шаблоном. Это обеспечивает такие функции, как NativeScript. Жесткое разделение уровня представления означает, что Angular может поддерживать другие языки шаблонов, что обеспечивает интеграцию, такую как Angular2 и NativeScript, которые используют XML для шаблона, а не HTML.
Разделение статических и динамических частей
Четкое разделение статических и динамических частей представления позволяет легко рассуждать о том, какие части представления изменяются, а какие нет. Это также выделено как улучшение производительности. Angular знает, какие части являются статическими, а какие нет. Это означает, что после первоначальной нагрузки статические части практически свободны.
Использование существующих знаний
Использование HTML-шаблонов означает, что мне не нужно обучать своего дизайнера JSX, я могу использовать множество существующих библиотек и инструментов, созданных на основе HTML, а разные члены моей команды могут выполнять свои различные функции, не зная JavaScript от и до. Конечно, есть некоторые вещи, которые вам нужно изучить, такие как ngFor и ngIf, но на этот раз нужно изучить гораздо меньше угловых директив.
В конечном счете, использование шаблона имеет свои преимущества и недостатки по сравнению с чем-то вроде JSX, и каждая команда должна определить, какие преимущества и недостатки они считают наиболее привлекательными. Шаблоны в HTML соответствуют Правилу наименьшей мощности и с недавно объявленными оптимизациями в Angular2 Universal ничего не стоят в плане производительности.
Посмотрите запись в блоге Виктора Савкина на эту тему: http://angularjs.blogspot.com/2016/03/why-angular-renders-components-with.html