Добро пожаловать в ренессанс Angular: представлена 17-я версия

от автора

Новый логотип Angular

Новый логотип Angular

Новый синтаксис шаблонов

Теперь при создании приложения будет появляться предложение о использовании SSR

Теперь при создании приложения будет появляться предложение о использовании SSR

Он проще читается и улучшает производительность

Пример использования нового switch

Пример использования нового switch

Мигрировать на новые директивы можно будет одной командой:

ng g @angular/core:control-flow-migration

@defer

Была представлена новая возможность отложенной загрузки

Была представлена новая возможность отложенной загрузки

Отложенные представления можно использовать в шаблоне компонента, чтобы отложить загрузку выбранных зависимостей в этом шаблоне. Эти зависимости включают компоненты, директивы и каналы, а также любой связанный CSS. Чтобы использовать эту функцию, вы можете декларативно обернуть раздел вашего шаблона в блок @defer, который определяет условия загрузки.

Необязательные блоки:

@placeholder — отображает контент до загрузки (доп условия: minimum — время, сколько показывается лоадер)

@defer {   <large-component /> } @placeholder (minimum 500ms) {   <p>Placeholder content</p> }

@loading — срабатывает при загрузке компонента (доп условия: after — после скольки милисекунд показывает лоадер, minimum — время, сколько показывается лоадер)

@defer {   <large-component /> } @loading (after 100ms; minimum 1s) {   <img alt="loading..." src="loading.gif" /> }

@error — срабатывает при ошибке загрузки

@defer {   <calendar-cmp /> } @error {   <p>Failed to load the calendar</p> }

Встроенные триггеры:

  • idle — вызовет отложенную загрузку, как только браузер достигнет состояния простоя (обнаруживается с помощью API-интерфейса requestIdleCallback), является триггером по умолчанию

  • interaction — загружает при клике, фокусе или похожем поведении

  • viewport — загружает, когда контент попадает в пользовательский viewport

  • hover — загружает при наведении

  • timer — загружает после прошествия заданного времени

Доступны также кастомные триггеры

Доступны также кастомные триггеры

Новый синтаксис имеет встроенные триггеры, но можно задавать и кастомные. Поддерживает prefetch и будет доступен в новой версии в качестве developer preview

prefetch наглядно

prefetch наглядно

Standalone компоненты

Теперь по умолчанию

Теперь по умолчанию

Чтобы не создавать standalone компонент, а обычный, пропишите дополнительный флаг:

ng generate component new-component --standalone false

@Input transform

Новые transform для @Input

Новые transform для @Input

При таком подходе теперь необязательно писать [disabled]="true", вместо этого просто disabled. Angular поймет, если вы передадите просто инпут, он его применит со значением true, а иначе применит значение, которое вы указали при инициализации.

Гидратация и SSR

Особенностью новой версии является гидратация и улучшения SSR:

  • поддержка ESM для серверных сборок

  • улучшение скорости сборки серверных бандлов

  • улучшен dev сервер для SSR

И ещё…

Новые сборщики по умолчанию

Новые сборщики по умолчанию

Благодаря чему material.angular.io билдится в 2.5 раза быстрее!

Немного преобразили Angular Dev Tools — теперь инжекторы и провайдеры проще и нагляднее инспектировать.

Также был представлен в бета-версии новый сайт с документацией: https://angular.dev/

Можно будет обновиться до новой 17 версии Angular уже 8 ноября!

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Как вам обновление?

91.3% Круто! Angular становится лучше168
8.7% Отстой, обновление так себе16

Проголосовали 184 пользователя. Воздержались 50 пользователей.

ссылка на оригинал статьи https://habr.com/ru/articles/772152/