tgoop.com/super_oleg_dev/187
Last Update:
Вернёмся к фичам.
React позволяет легко реализовать классический серверный рендеринг с гидрацией.
Любой SSR имеет несколько значимых проблем:
- долгое время ответа страницы (ждём запросы, рисуем HTML)
- долгое время до интерактивности (уже видим контент но не кликабельно до загрузки всего JS)
- толстый бандл (тащим код всех компонентов)
При этом SSR актуален, имеет много плюсов, и фреймворки по разному стараются решить эти проблемы:
- потоковый рендеринг начиная с Marko.js
- await/defer в Remix
- islands architecture в Astro
- resumability в Qwik.js
Тут можно упомянуть костыль с lazy hydration для React.
И React также предлагает решения для всех этих кейсов, и решения очень интересные, эффективные и инновационные, не более спорные чем все остальные.
Что-то приходится долго ждать, что-то требует кардинально менять архитектуру - все не идеально, но отмечу что новые фичи опциональны.
Когда открыли репозиторий с дискуссиями React Working Group про 18 версию, я половину ночи провел за чтением, настолько было интересно, так как там обсуждались проблемы с которыми я сталкиваюсь на практике, и технологии которые помогут их решить.
И опять таки опираясь на фундамент архитектуры с vDOM и Fiber, фреймворк предлагает нам следующие решения:
Полноценный потоковый рендеринг - с поддержкой Suspense на сервере, теперь можно быстро отдать App Shell, дождаться асинхронных действий на сервере, и досылать разметку по мере необходимости - что позволит улучшить и метрику TTFB и LCP.
И на практике, почему это круто - во-первых это фундамент для React Server Components, во-вторых на этом основан уже упомянутый await/defer
- что я считаю самой крутой фичей для классического SSR, который не готов полностью переходить на стриминг с RSC.
Selective Hydration - больше не нужно загружать весь бандл для начала гидрации, фреймворк позволяет гидрировать отдельные части приложения по требованию (базовый кейс, по факту загрузки lazy компонентов).
Это позволяет сильно улучшить время до интерактивности приложения, причем радикально в комбинации со стримингом, так как на клиенте надо загрузить только код фреймворка и точку входа в приложение для начала гидрации.
Подробнее про новую SSR архитектуру в этой дискуссии и моих предыдущих постах.
Про SEO и стриминг интересно тут - https://github.com/vercel/next.js/discussions/50829
BY SuperOleg dev notes

Share with your friend now:
tgoop.com/super_oleg_dev/187