Что такое гидратация

Ответ

Гидратация в контексте фронтенда — это процесс "оживления" статичного HTML, полученного с сервера, путем подключения JavaScript. Это превращает статичную разметку в интерактивное приложение.

Пример с React:

// Статичный HTML с сервера
<div id="root">
  <button>Click me</button>
</div>

// После гидратации
ReactDOM.hydrate(
  <App />,
  document.getElementById('root')
);

Ключевые моменты:

  • Сохраняет первоначальный DOM вместо полной перерисовки
  • Подключает обработчики событий к существующим элементам
  • Особенно важно для SSR/SSG (Next.js, Nuxt.js)
  • Улучшает восприятие скорости загрузки (FCP)

Ответ 18+ 🔞

А, ну это же та самая магия, когда твой HTML приезжает с сервера уже готовенький, как будто бабушка пирожков напекла, а ты, такой хитрожопый фронтендер, подкрадываешься и начинаешь его оживлять, как Франкенштейн свою невесту!

Смотри, в чём прикол. Сервер, этот трудяга, отдаёт браузеру уже сверстанную страницу. Кнопки, текст, всё на месте. Пользователь сразу видит контент — красота! Но эти кнопки — просто куски пластилина, они нихуя не кликаются. Они как экспонаты в музее: смотри, но не трогай.

А потом приезжает твой React, весь такой важный, с чемоданчиком, полным JavaScript'а, и начинает гидрацию. Это не перерисовка, нет! Это как если бы к этим музейным экспонатам тихонько подошли и вставили им моторчики и провода. DOM остаётся тот же самый, но теперь у каждой кнопки появляется мозг и реакция на клик.

Вот смотри на код, тут всё просто:

// С сервера прилетело вот такое бездушное тело
<div id="root">
  <button>Click me</button>
</div>

// А потом React как шаман начинает над ним бубнить
ReactDOM.hydrate(
  <App />, // Вот эта твоя интерактивная сущность
  document.getElementById('root') // Над этим самым куском DOM
);

Он сравнивает, что пришло с сервера, с тем, что должно быть по твоему компоненту App. Если всё совпадает — ебать ты красавчик, гидрация прошла успешно, и обработчики навешались. Если нет — будет тихий пиздец, React впадёт в ступор и начнёт всё переделывать с нуля, похерив всю выгоду от SSR.

Зачем это всё? А затем, ёпта, чтобы пользователь не пялился на белый экран, пока твой мега-бандл грузится! Он сразу видит контент (это называется FCP — First Contentful Paint, и за него тебя Google похвалит). А интерактивность подтянется чуть позже, как умная мысль после третьей рюмки. Особенно это любят в Next.js, Nuxt.js и прочих модных фреймворках, где рендеринг на сервере — это священная корова.

Короче, гидрация — это когда твой сайт из красивой, но безмозглой картинки превращается в полноценное приложение, и всё это — почти без видимого для пользователя дергания. Почти магия, только вместо палочки — JavaScript.