Новые платформы Javascript, такие как Svelte и SolidJS, становятся все более популярными. Одной из причин этого является DX. Но почему это так важно? И как работает Angular в отношении этой темы?

Что такое DX?

Чтобы ответить на поставленные выше вопросы, нужно знать, о чем именно мы говорим. После некоторых исследований я наткнулся на следующее определение.

«DX описывает общие ощущения и ощущения, которые возникают у разработчика при взаимодействии с техническим продуктом». [1]

Итак, давайте взглянем на некоторые статистические данные, чтобы лучше понять, как работает Angular по сравнению с другими фреймворками. График иллюстрирует ранжирование по удержанию. Как видите, Angular занимает предпоследнее место.

Но почему Angular так плохо ранжируется? А что другие фреймворки делают лучше?

Почему Angular работает так плохо?

Ну, во-первых, Angular не очень удобен для новичков. Есть много концепций, которые нужно изучить, чтобы написать приложение на Angular (например, модули, внедрение зависимостей, привязка данных и т. д.).

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

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

Что может сделать Angular, чтобы лучше ранжироваться?

Короче говоря, им нужно улучшить свой DX.

Angular поняли, что им нужно работать лучше. Поэтому в каждой новой версии Angular основное внимание уделяется совершенствованию и большей дружелюбности к новичкам.

Одним из примеров являются автономные компоненты. Модули Angular не являются простыми модулями Javascript — с импортом и экспортом — но их можно рассматривать как вспомогательный блок для упрощения структурирования приложения. Представьте, что кто-то, кто не знаком с этой концепцией, просто хочет создать простое приложение с несколькими компонентами. Это было бы довольно сложно, потому что кто-то должен сначала изучить концепцию модуля. Поэтому, поскольку компоненты Angular 14+ больше не нужно определять в модуле, они могут существовать без них. Базовый код остается тем же, как и компиляция, отличается только опыт разработчиков.

Но чего еще не хватает?

Можно улучшить не только обнаружение изменений, но и интеграцию RxJS. Например, в Svelte использование RxJS кажется более естественным. На Observable можно автоматически подписываться и отменять подписку с помощью оператора $. Разработчикам приходится писать меньше кода, чтобы получить тот же результат, что и в Angular.

Кроме того, новые фреймворки используют лучшие концепции рендеринга. Давайте посмотрим на SolidJS. Они полагаются на Сигналы, что обеспечивает детальную реакцию. Таким образом, только те части компонента, которые были изменены, будут повторно визуализированы. В Angular всегда перерисовывается весь компонент.

Следует признать, что Angular также представил Сигналы в своей последней версии. Однако Обнаружение изменений не изменилось. Он работает так же, как и раньше. Однако в будущих версиях будет возможность включить детализированную реактивность на уровне компонентов.

Так что же делает Angular?

Мне кажется, что Angular выбирает лучшие части каждой новой платформы Javascript и добавляет их в свои новые версии.

Я не уверен, что это лучшая стратегия, но надеюсь, что с каждым улучшением DX становится лучше.

Заключение

Как видно из последних изменений в Angular, их цель определенно состоит в том, чтобы сделать его более удобным для начинающих и, таким образом, увеличить DX. Однако, поскольку они всегда хотят быть обратно совместимыми, это не самая простая задача.

Другие фреймворки имеют лучшие концепции реагирования и рендеринга, и Angular пытается включить лучшие части этих фреймворков в свои собственные.

Время покажет, является ли это лучшей стратегией для привлечения большего числа разработчиков к использованию Angular. Нам просто нужно подождать и посмотреть, что произойдет.

Ссылки

[1] https://www.getclock.com/blog/what-is-developer-experience#:~:text=Developer%20experience%2C%20or%20DX%20for,имея%20a%20two%2Dfold%20значение .

[2] https://2022.stateofjs.com/en-US/libraries/front-end-frameworks/