Что такое гидратация
Разберитесь, как гидратация повторно использует серверный HTML
«Что такое гидратация» — бесплатный урок Angular Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Angular Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Angular Academy содержит 4 уроков всего.
Определение гидратации
Гидратация — это процесс, при котором клиентское Angular-приложение повторно использует HTML, отрисованный на сервере, добавляя обработчики событий и состояние к существующему DOM вместо его удаления и повторного рендеринга.
Жизнь без гидратации
В устаревшем SSR использовалась разрушающая гидратация: клиент удалял DOM сервера и полностью отрисовывал его заново. Это вызывало заметное мерцание и обесценивало работу сервера.
Неразрушающая гидратация
Современный Angular выполняет неразрушающую гидратацию: он обходит существующий DOM, сопоставляет его с деревом компонентов и повторно использует узлы. Нет мерцания, требуется меньше работы и повышается производительность.
Почему это улучшает показатели
Повторное использование HTML сервера означает, что самое крупное содержимое остаётся отрисованным, что помогает показателю LCP, а отсутствие повторного рендеринга предотвращает сдвиги макета, улучшая CLS. Приложение становится интерактивным без повторной отрисовки.
Двухэтапная схема
Этап первый: сервер отрисовывает HTML и отправляет его. Этап второй: браузер загружает JS, запускает Angular и гидратирует существующую разметку, делая её интерактивной.
Совпадение структуры DOM
Гидратация предполагает, что дерево компонентов клиента создаёт ту же структуру, которую создал сервер. Если структуры различаются, Angular сообщает о несоответствии при гидратации.
// NG0500: During hydration Angular expected <div> but found <span>Распространённые причины несоответствий
Несоответствия вызывают прямая манипуляция DOM, ветви только для браузера, изменяющие разметку, некорректная вложенность HTML и недетерминированное содержимое, например Math.random() или Date.now() в шаблонах.
Как избежать ручного редактирования DOM
Не изменяйте DOM императивно, например с помощью innerHTML за пределами Angular, во время SSR. Позвольте Angular управлять DOM, чтобы клиент и сервер использовали одинаковую структуру.
Способ отключения с помощью ngSkipHydration
Если компонент действительно невозможно гидратировать, например сторонний виджет изменяет DOM, отключите для него гидратацию с помощью ngSkipHydration; Angular повторно отрендерит только это поддерево.
<app-legacy-widget ngSkipHydration></app-legacy-widget>Для гидратации требуется SSR
Гидратация применяется только тогда, когда есть HTML, отрисованный на сервере, который можно повторно использовать. В чистом приложении CSR нечего гидратировать: гидратация — это клиентская часть SSR.
Что дальше
Гидратация может быть полной (всё приложение гидратируется при загрузке) или инкрементальной (части приложения гидратируются по требованию). Правильный выбор стратегии важен для производительности; это будет рассмотрено в следующих уроках.
Быстрая проверка
Проверьте, насколько хорошо Вы понимаете гидратацию.
Итоги
Гидратация повторно использует HTML сервера на клиенте без разрушительных изменений, улучшая LCP и CLS. Несоответствия возникают из-за ручного изменения DOM или недетерминированной разметки; используйте ngSkipHydration как обходной путь. Гидратация — это клиентская часть SSR.
Часто задаваемые вопросы
Урок «Что такое гидратация» бесплатный?
Да — полный текст урока «Что такое гидратация» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Angular Academy, подпишись на CoddyKit PRO. Курс Angular Academy содержит 4 уроков всего.
Чему я научусь в уроке «Что такое гидратация»?
Разберитесь, как гидратация повторно использует серверный HTML Ты практикуешь Angular Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Angular Academy?
Предыдущий опыт не требуется. Angular Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Что такое гидратация»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Angular Academy?
Да. Каждый урок Angular Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Что такое гидратация
- Включение полной гидратации
- Инкрементальная гидратация с @defer
- Измерение основных веб-показателей