Частичная гидратация — наиболее востребованная функция Angular. Почему?

Давайте объясним это простыми словами.

Если вы все сделаете правильно, а это значит:

  • Вы создаете небольшие, многоразовые компоненты.
  • Вы лениво загружаете все, что должно загружаться лениво (любые изображения, тяжелые модули, компоненты, сторонние библиотеки)
  • Размер вашего пакета достаточно мал.
  • Вы знаете, как идентифицировать и отключить любые дополнительные повторные рендеринги.
  • Вы используете Angular SSR (через универсальный или что-то вроде Scully)

Даже если вы сделаете все это и оптимизируете все возможные килобайты, вы получите Время взаимодействия (TTI) 5+ секунд на мобильном телефоне Google Lighthouse.

TTI — это не просто показатель, используемый для победы в онлайн-спорах о том, какая среда веб-разработки является самой быстрой. Это важный показатель, поскольку он является частью ваших основных веб-показателей Google, который влияет на рейтинг вашей страницы и взаимодействие с пользователем.

Поэтому команда Angular решила что-то с этим сделать.

Представляем…. Частичное увлажнение.

Полное объяснение Джеффа можно посмотреть здесь: https://www.youtube.com/watch?v=19bN92JLRIg.

Детали того, как это работает, он объясняет в игровой форме — очень рекомендую к просмотру. Однако Джефф упускает некоторые важные детали, которые становятся очевидными только после того, как вы попытаетесь интегрировать частичную гидратацию в приложение. В этой статье я собираюсь задокументировать свой опыт.

1. Используете Скалли? Везет, как утопленнику.

Если вы раньше не слышали о Scully: Scully — это инструмент, который делает SSR в Angular гораздо менее болезненным, чем он должен быть. Angular Universal использует Domino.js для рендеринга ваших страниц. Это означает две вещи:

  • Если вы используете функцию JS, которую Domino не поддерживает, вам придется либо заполнить ее полифилом, либо найти другое обходное решение.
  • Если вы используете библиотеку, в которой используется функция, не поддерживаемая Domino, вы собираетесь…