Кровь из глаз у меня начинает течь, когда я вижу, как в одном файле пишут разметку и логику. Это ебаный пиздец.
Я не могу сравнить, скажем, react и angular. Хотя бы потому, что на первом из них я ничего сложнее хэллоу ворлда не писал.
Но я могу в целом рассказать, чем мне нравится angular.
Сейчас идет третий год, как я перешел с бэкенда на фронтенд. Все это время я, в составе команды разработчиков, работаю над одним приложением.
Морда на ангуларе, бэкенд - почти два десятка микросервисов.
В приложении куча модулей - какие-то обязательные, какие-то грузятся по требованию. Дохрена бизнес-логики и взаимодействия модулей и компонентов друг с другом.
0) Typescript. При переходе на с бэкенда облегчает боль. Типизация, классы, интерфейсы, дженерики, юнион тайпы... Складывается ощущение, что пишешь на почти полноценном языке, а не на жабаскрипте.
1) Rxjs. В случае ангулара это библиотека ngrx, которая уже чуть ли не проф. стандарт. Каждый модуль имеет свой feature store, часть store общие - обеспечивает синхронизацию данных между компонентами и модулями, инкапсулирует все обращение к api в эффектах. Позволяет держать компоненты чистенькими.
2) Dependency injection. Офигенно реализован. Используется из коробки, по необходимости легко настраиваются скоупы, фабрики для специфичного создания инстансов итд. Отдельно радует InjectionToken, облегчающий жизнь в тех случаях, когда нужно не просто заинжектить синглтон сервиса в эффект, а передать данные в динамически создаваемый компонент типа сайдвью или диалогового окна.
3) Template Driven Forms. Да, еще есть реактивные формы, но это все от лукавого. тдельно разметка, отдельно логика, двустороннее связывание. Ничего лишнего, код чистый и красивый.
4) Каждый компонент делится на файлы - отдельно верстка, отдельно логика, отдельно стили. Вот этот пункт прям камень в сторону реакта. Не понимаю, как можно писать по-другому.
5) Two/One-Way Data Binding. Тут даже комментарии не нужны. В совокупности с настраиваемыми стратегиями на Change Detection - просто песня.
6) View Encapsulation. Для каждого компонента выбирается, что использовать - dom, shadow dom, shadow dom emulation. Нужно редко, но штука крутая.
7) Directives. Кастомные директивы - это штука, которая в большом приложении позволяет очень упростить жизнь разработчику. Наваял директиву со сколь угодно простой или сложной логикой, положил в shared модуль (если нужно) - модифицируешь нужные компоненты просто цепляя на них директиву. Сюда же можно отнести custom pipes.
8) Router. Дочерние роуты, гварды, резолверы... Вместе с lazy loading для модулей позволяет выстраивать очень гибкую систему роутинга, обмазанную проверками прав, предварительной подгрузкой данных итд итп.
В принципе это то, что меня радует регулярно. Есть еще server side rendering, pwa итд итп. Да и из простого я наверное что-то забыл.
Но все эти пункты объединяет одно. Они позволяют нам, делая большое приложение, разделять состояние приложения, модели, вызови к апи, бизнес логику, верстку, логику компонентов итд итд на отдельные, скажем так, слои. И я не представляю, как без этого мы бы не закопались в своем приложении еще год-полтора назад.
Вообще говоря я уверен, что есть много людей, которые могу то же самое сказать о том фрэймворке или библиотеке, на которых пишут именно они. И они тоже будут правы.
Я же так не могу, пока не пну себя выучить что-то еще :)
Или дед, который боится ввести ЧС и перекладывает принятие решений на губернаторов?
https://www.state.gov/u-s-purchase-of-needed-supplies-from-russia/
Я не могу сравнить, скажем, react и angular. Хотя бы потому, что на первом из них я ничего сложнее хэллоу ворлда не писал.
Но я могу в целом рассказать, чем мне нравится angular.
Сейчас идет третий год, как я перешел с бэкенда на фронтенд. Все это время я, в составе команды разработчиков, работаю над одним приложением.
Морда на ангуларе, бэкенд - почти два десятка микросервисов.
В приложении куча модулей - какие-то обязательные, какие-то грузятся по требованию. Дохрена бизнес-логики и взаимодействия модулей и компонентов друг с другом.
0) Typescript. При переходе на с бэкенда облегчает боль. Типизация, классы, интерфейсы, дженерики, юнион тайпы... Складывается ощущение, что пишешь на почти полноценном языке, а не на жабаскрипте.
1) Rxjs. В случае ангулара это библиотека ngrx, которая уже чуть ли не проф. стандарт. Каждый модуль имеет свой feature store, часть store общие - обеспечивает синхронизацию данных между компонентами и модулями, инкапсулирует все обращение к api в эффектах. Позволяет держать компоненты чистенькими.
2) Dependency injection. Офигенно реализован. Используется из коробки, по необходимости легко настраиваются скоупы, фабрики для специфичного создания инстансов итд. Отдельно радует InjectionToken, облегчающий жизнь в тех случаях, когда нужно не просто заинжектить синглтон сервиса в эффект, а передать данные в динамически создаваемый компонент типа сайдвью или диалогового окна.
3) Template Driven Forms. Да, еще есть реактивные формы, но это все от лукавого. тдельно разметка, отдельно логика, двустороннее связывание. Ничего лишнего, код чистый и красивый.
4) Каждый компонент делится на файлы - отдельно верстка, отдельно логика, отдельно стили. Вот этот пункт прям камень в сторону реакта. Не понимаю, как можно писать по-другому.
5) Two/One-Way Data Binding. Тут даже комментарии не нужны. В совокупности с настраиваемыми стратегиями на Change Detection - просто песня.
6) View Encapsulation. Для каждого компонента выбирается, что использовать - dom, shadow dom, shadow dom emulation. Нужно редко, но штука крутая.
7) Directives. Кастомные директивы - это штука, которая в большом приложении позволяет очень упростить жизнь разработчику. Наваял директиву со сколь угодно простой или сложной логикой, положил в shared модуль (если нужно) - модифицируешь нужные компоненты просто цепляя на них директиву. Сюда же можно отнести custom pipes.
8) Router. Дочерние роуты, гварды, резолверы... Вместе с lazy loading для модулей позволяет выстраивать очень гибкую систему роутинга, обмазанную проверками прав, предварительной подгрузкой данных итд итп.
В принципе это то, что меня радует регулярно. Есть еще server side rendering, pwa итд итп. Да и из простого я наверное что-то забыл.
Но все эти пункты объединяет одно. Они позволяют нам, делая большое приложение, разделять состояние приложения, модели, вызови к апи, бизнес логику, верстку, логику компонентов итд итд на отдельные, скажем так, слои. И я не представляю, как без этого мы бы не закопались в своем приложении еще год-полтора назад.
Вообще говоря я уверен, что есть много людей, которые могу то же самое сказать о том фрэймворке или библиотеке, на которых пишут именно они. И они тоже будут правы.
Я же так не могу, пока не пну себя выучить что-то еще :)