Преобразование из Next.js в Astro

Инженерное дело

Если вы активно участвуете в сообществе React, то возможно, знаете про использование фреймворком для построения статических и серверных веб-приложений. Это предлагает несколько преимуществ, включая трансформацию JavaScript React-клиентского приложения в приложение на стороне сервера, которое строит HTML / контент для пользователя. Другими словами, код отправляется и готов к использованию, исключая необходимость выполнения клиентского кода для построения данных или HTML-структуры.

Файлы, включая предварительно созданный HTML, CSS, JavaScript и другие файлы, перемещаются на веб-сервер, который может обрабатывать запросы на браузер.
Пример перемещения кода на сервер для перемещения необходимых файлов в браузер. (Изображение из MDN)

На первый взгляд, еще один фреймворк?

Изначально, изучая этот проект после моего путешествия в быстрый мир инструментов JavaScript, Astro выглядел очень похожим на Next.js в терминах предоставления статической генерации сайта (SSG). Это огромная победа, потому что это приводит к лучшей производительности и многому другому. Однако, основное различие между ними состоит в том, что Astro не заботится о языке, который вы используете. Это инструмент, который сосредоточен только на построении всего HTML, которое может быть сгенерировано на сервере во время процесса сборки. Следовательно, весь неиспользуемый JavaScript на HTML, выполняемый на сервере, удаляется.

Не так ли делает и Next.js?

Ну, да и нет. Next.js обрабатывает это, но за счет дополнительного JavaScript и пакетов, которые запускаются на странице. Они гидратируют контент с сервера, позволяя ему оставаться интерактивным с необходимым клиентским JavaScript (как анимация и события). Страница отправляется с дополнительным кодом, который позволяет этой функциональности работать, независимо от интерактивности, что делает полезную нагрузку более тяжелой. В сравнении с Astro, отправляется только необходимый JavaScript для интерактивности страницы и запуска приложения кода, без ограничений для конкретной библиотеки или языка. На сайте SPA базового уровня, Next.js занимает около 704 мс на загрузку, тогда как Astro занимает всего 107 мс.

Next.js выполняет 16 запросов и загружает базовый веб-сайт за 704 мс, а Astro выполняет 7 запросов и загружается за 107 мс.
Примеры с Next.js слева и Astro справа.
Персональный сайт Джеффа Мендеза включает три пункта навигации, изображение Джеффа Мендеза, занимающегося рыбалкой, и введение. Привет, меня зовут Джефф Мендез, и я являюсь программным инженером и основателем A11yWatch, набора улучшения доступности веб-сайтов. Посмотрите A11yWatch, чтобы улучшить свою веб-инклюзию и бесплатно использовать проверку доступности веб-сайта. Вот ссылка на мой личный код на Github.</0>
Пример тестируемого веб-сайта.

В будущее!

Мы очень взволнованы возможностями Astro и с нетерпением ждем того, чтобы переместить наш контент. Следите за нами, мы опубликуем еще больше контента об этом новом инструменте, который может помочь разработчикам сохранить свою производительность при доставке небольших пакетов. Миграция примера занимает около 20 минут, начиная с первоначального ознакомления с документацией и заканчивая перемещением всего приложения. Можно извлечь тут настройки TypeScript для переноса из Next.js в Astro.

Джефф Мендез

Меня зовут Джефф, и я являюсь основателем и создателем A11yWatch.

Связанные сообщения

Оставайтесь включительными с уверенностью

Начните сейчас с A11yWatch для автоматизированных, эффективных и доступных инструментов для веб-доступности.