Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда

Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда

🌊 Гидратация: плюсы и минусы

Гидратация – это процесс, который JavaScript выполняет для взаимодействия с уже существующим HTML-кодом, загруженным в DOM через серверный рендеринг (SSR). Это подход позволяет быстро показать пользователю основное содержимое страницы, а затем добавить интерактивные элементы:

  • Сервер отправляет предварительно отрендеренный HTML клиенту.
  • Этот HTML содержит структуру и контент страницы, но без интерактивности.
  • Затем JavaScript загружается и добавляет интерактивную функциональность к статическому HTML.

Процесс называется гидратацией, потому что JavaScript буквально оживляет HTML – подливает в сухой статический код живой воды интерактивности. 🙂

Большинство популярных JS-фреймворков поддерживают гидратацию. Возьмем, к примеру, фреймворк Next.js, предназначенный для работы с React – он поддерживает как серверный рендеринг, так и гидратацию. Гидратация в React – это процесс привязки React к уже существующему HTML, который был сгенерирован на сервере. Во время гидратации React добавляет обработчики событий к существующим элементам и берет на себя рендеринг приложения на стороне клиента.

Главный недостаток клиентского рендеринга

Для иллюстрации клиентского рендеринга рассмотрим простейший пример с инвентаризацией запасов – здесь мы создаем кнопки, при нажатии на которые отображается количество фруктов на складе:

Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда

Работающий пример можно посмотреть на CodePen:

Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда

Когда браузер загружает эту страницу, он получает пустой HTML-каркас:

<div id="root"></div>

Затем приложение рендерится на клиенте. Однако такой подход не идеален: если JavaScript вдруг не загрузится, сайт не будет работать. Это может произойти по разным причинам: ошибка в коде, проблемы с сетью, (не)преднамеренная блокировка JavaScript пользователем и т. д.

Привет!

Мы запустили еженедельную email-рассылку, посвященную последним новостям и тенденциям в мире фронтенда. В наших еженедельных рассылках ты найдешь:

  • Современные JavaScript-фреймворки и библиотеки.
  • HTML5 и CSS3: новые возможности и трюки.
  • Оптимизация производительности веб-приложений.
  • Тестирование и отладка кода.
  • Лучшие практики UX/UI.
  • Новые веб-стандарты и браузерные технологии.
  • Тренды в веб-дизайне и интерфейсах.
  • Прогрессивные веб-приложения (PWA).

Преимущества серверного рендеринга

Если использовать Next.js с серверным рендерингом, то HTML-вывод будет выглядеть иначе – контент будет отображаться сразу в HTML:

Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда

Этот подход намного лучше, так как браузер может сразу отобразить контент, и любые автоматизированные запросы (например, от ботов или curl) будут успешными (что очень важно для SEO и соблюдения стандартов доступности).

После загрузки JavaScript происходит гидратация HTML. Во время гидратации обработчики событий, такие как onClick, будут добавлены к кнопкам, и они станут интерактивными. С одной стороны, добавление интерактивности во время второго рендера – не совсем идеальное решение, но с другой стороны – быстрая загрузка большого объема контента иногда бывает важнее.

Сложность реализации

Использование серверного рендеринга и гидратации связано с определенными сложностями:

  • Используя фреймворк, который поддерживает SSR и гидратацию, вы добавляете новый уровень сложности к уже существующему стеку технологий. Это требует внедрения процесса сборки и добавления новых зависимостей.
  • Использование фреймворков с SSR и гидратацией часто приводит к более сложному коду. Разработчик должен учитывать, что компонент может быть отрендерен как на сервере, так и на клиенте.
  • При написании JavaScript, который должен работать как на сервере, так и на клиенте, можно столкнуться с нетривиальными проблемами. Например, доступ к объекту window невозможен на сервере, так как он существует только в браузере.

👾 Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека хакера»

Proglib.io

Что может пойти не так?

Использование серверного рендеринга и гидратации сопряжено с несколькими потенциальными проблемами:

  • Несовпадение HTML. Основная проблема, с которой можно столкнуться, – это несовпадение HTML-кода, генерируемого на сервере и на клиенте. Например, если в компоненте есть случайные данные или различия в состоянии, HTML, созданный на сервере, может не совпадать с тем, что пытается отобразить клиент.
  • В процессе разработки вы, скорее всего, будете постоянно исправлять критические ошибки гидратации, поскольку фреймворки типа Next.js настоятельно этого требуют.
  • Двойная работа. Обычно продакшн-сборка сайта сглаживает пользовательские ошибки, чтобы сайт оставался функциональным. Проблема в том, что тогда сайт буквально выполняет вдвое больше работы, и SSR-страница полностью заменяется, когда приходит клиентская версия и не соответствует ей.
  • Хрупкость системы. Ошибки гидратации могут привести к тому, что сайт станет полностью неработоспособным. Такие проблемы могут возникнуть в любой момент, особенно если вы вносите изменения в компоненты, которые работают как на сервере, так и на клиенте.

Обязательна ли гидратация при использовании JavaScript-фреймворка с серверным рендерингом?

Основной минус гидратации – накладные расходы, поскольку она подразумевает восстановление обработчиков событий путем загрузки и повторного выполнения всех компонентов, которые были отрендерены на сервере. Таким образом, сайт отправляется клиенту дважды: сначала как HTML, а затем как JavaScript. Этот подход оправдан, если вам нужен и серверный рендеринг, и интерактивность. Но если вам не нужна никакая интерактивность вообще, то можно использовать SSR без всякой гидратации:

  • Astro отлично справляется с выводом статического содержимого, и другие фреймворки можно настроить так, чтобы они не выводили никакого JavaScript (тем самым пропуская весь процесс гидратации).
  • Фреймворк Qwik полностью избегает гидратации благодаря концепции, которую его разработчики называют возобновляемостью: он может загружать и активировать только те части кода, которые необходимы, без необходимости загружать всю страницу дважды.

🧪 Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека тестировщика»

Proglib.io

✒ Как улучшить UI: 10 советов для начинающих фронтендеров

Обращайте внимание на отступы и поля

Почему это важно: Неравномерные отступы и поля создают ощущение неаккуратности и неопытности. Равномерные отступы делают интерфейс более чистым и профессиональным.

Как это сделать: Используйте кратные значения, например, кратные 4 (4px, 8px, 12px, 16px):

Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда

Это создает ритм в вашем макете и делает его более аккуратным:

Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда

Обязательно обрабатывайте пустые состояния

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

Как это сделать: Добавьте полезные сообщения или кнопки действий (CTA), чтобы направить пользователей на следующий шаг.

Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда
Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда

☕ Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека джависта»

Proglib.io

Всегда показывайте индикаторы загрузки

Почему это важно: Если приложение выполняет действие в фоновом режиме, дайте пользователям знать об этом, чтобы они не ломали голову, сработала ли кнопка и не зависло ли приложение.

Как это сделать: Используйте задержку при показе индикатора загрузки для быстрых операций, чтобы он не исчезал слишком быстро.

Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда
Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда

Поддерживайте четкую визуальную иерархию

Почему это важно: Не все элементы на экране одинаково важны. Ваш интерфейс должен это отражать, чтобы пользователи понимали, что важно.

Как это сделать: Используйте разные размеры, цвета и толщину шрифтов, чтобы выделить ключевые элементы.

Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда
Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда

🐍 Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста»

Proglib.io

Дизайну тоже нужен воздух

Почему это важно: Не нужно заполнять каждую часть экрана чем-то. Пустое, или, как его еще называют, негативное, пространство помогает вашему приложению «дышать» и позволяет пользователям сосредоточиться на самых важных элементах.

Как это сделать: Увеличьте расстояние между несвязанными элементами и уменьшите его между связанными.

Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда
Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда

Сделайте сообщения об ошибках понятными и полезными

Почему это важно: Ошибки неизбежно случаются, и важно, чтобы пользователи знали, что именно произошло. Вместо простого сообщения об ошибке, например, «Ошибка 404», нужно предоставить контекст и варианты решения проблемы.

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

Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда
Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда

🐘 Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека пхпшника»

Proglib.io

Добавляйте подсказки для длинного текста и неактивных состояний

Почему это важно: Если текст обрезается или кнопка неактивна, подсказка может предоставить дополнительную информацию, помогая пользователям понять, почему это происходит.

Как это сделать: Используйте подсказки, чтобы предоставить контекст или объяснить, почему кнопка неактивна и что пользователь может или должен сделать в связи с этим.

Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда
Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда

Используйте подходящие по контексту цвета для обратной связи

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

Как это сделать: Следуйте установленным цветовым конвенциям, чтобы избежать путаницы у пользователей.

Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда
Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда

📖 Больше полезных книг вы найдете на нашем телеграм-канале «Книги для программистов»

Proglib.io

Иконки должны подчеркивать, а не загромождать дизайн

Почему это важно: Не перегружайте интерфейс иконками без необходимости – не каждому пункту меню, например, непременно нужна иконка. Каждая иконка должна иметь ясную цель и улучшать взаимодействие с пользователем.

Как это сделать: Делайте иконки простыми и узнаваемыми, чтобы они соответствовали действиям, которые они представляют.

Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда

Не изобретайте велосипед – пользуйтесь профессиональными UI-библиотеками

Почему это важно: Не обязательно писать все с нуля. Существуют отличные UI-библиотеки – Ant Design, Shadcn UI, Material UI, Chakra UI и т. д., которые могут сэкономить время, усилия и придать вашему фронтенду стильный вид.

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

Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда
Итоги недели в мире фронтенда и обзоры новых сервисов: секреты идеального фронтенда

Больше советов о создании идеального UI/UX – в этом лонгриде профессионального дизайнера и фронтендера Адама Даннавэя.

Автор рассылки: Наталья Кайда

33
3 комментария

Фреймворки нужны для организации совместной работы дизайнера интерфейса и программиста. Если дизайнер н HTML (+jqeury) накодит - придется на тех же технологиях и создавать....

Ответить

О, рассылки от проглиба теперь и на дтф. Очень хорошо же.

Ответить

Годно, особенно по цветам интересно было почитать что и как. Но сейчас очень нравится чб. Звук прям кайфово сделал свою вебку

Ответить