Next. js stati c рендеринг на стороне сервера и Gatsby. js - PullRequest
0 голосов
/ 01 мая 2020

Я хочу создать сайт с помощью Next. js и пытаюсь лучше понять их Automati c Stati c Оптимизация и различные способы его использования.
Итак, для начала, есть Гэтсби. js, который является генератором сайта * stati c. Когда вы запускаете команду Gatsby build, вы получаете папку /public, которая полностью стати c и может быть развернута без какой-либо необходимости в каком-либо бэкэнде. Если я правильно понимаю, это означает, что вся папка stati c отправляется клиенту по первому запросу, и с этого момента все, включая маршрутизацию, происходит на стороне клиента.
С Next. js на с другой стороны, у вас есть генерация stati c, что означает, что все страницы предварительно визуализируются на сервере во время сборки (например, Gatsby), но приложение по-прежнему зависит от серверной части (либо полноценного сервера, либо безсерверная функция) для маршрутизации. То есть, страницы предварительно отображаются, но, в отличие от Гэтсби, они отправляются клиенту по запросу, то есть по навигации. (Я нашел этот ответ , который говорит, что есть только начальный запрос с Next, но затем, в чем отличие от Гэтсби?)
Что меня смущает во всем этом, такие вещи, как документы Next для Stati c HTML Экспорт . Они начинаются с того, что

next export позволяет вам экспортировать ваше приложение в stati c HTML, который может работать автономно без использования сервера Node.js.

Итак, звучит так, как будто эта опция дает нам возможность использовать Next как Gatsby, то есть как полностью стати c папку.
Но тогда они go отмечают, что:

Если на ваших страницах нет getInitialProps, вам может вообще не понадобиться next export; next build уже достаточно благодаря Automati c Stati c Оптимизация .

Но Automati c Stati c Оптимизация относится только к серверной стороне c перед рендерингом, а next build не создает Gatsby-подобную папку stati c, которую можно развернуть как отдельную.
Так чего мне здесь не хватает? В чем разница между Гэтсби. js и Next. js? Может ли Гэтсби что-то сделать, а дальше нет? Могу ли я создать полностью статический c сайт с помощью Next, не используя команду export?
Самое главное, могу ли я создать и развернуть приложение Next. js с некоторыми страницами полностью статически c (например, Gatsby) некоторые страницы только предварительно обработаны (getStaticProps и getStaticPaths), а некоторые страницы обработаны на стороне сервера (getServerSideProps)?

Заранее большое спасибо!

1 Ответ

1 голос
/ 09 мая 2020

Первый запрос для <url>/index.html, поэтому нет, все public не отправляется клиенту.

Gatsby оптимизирует процесс загрузки, чтобы в первую очередь загружать критические ресурсы (HTML, CSS, JS), обеспечивая наилучшее взаимодействие с пользователем. Оттуда он загрузит оставшиеся ресурсы, необходимые для отображения полной страницы, а также будет предварительно выбирать связанные страницы с главной страницы. Конечно, если вы запросили маршрут к другой странице, клиент сначала извлечет HTML для этой страницы, но последующий процесс будет аналогичным.

В этом Гэтсби все еще лучше, чем Next. js (SSG - это очень новая функция для Next, и это ядро ​​того, что делает Гэтсби) - см. https://dev.to/notsidney/gatsby-won-against-next-js-in-this-head-to-head-37ka.

В ответ на ваши вопросы, да, вы можете сделать полный SSG, частичный SSR / SSG и полный SSR с Next. Вам нужно сделать next export, если вам нужен полный SSG, в противном случае для других режимов вы находитесь на стандартной территории Next, и Next позаботится о SSG / SSR, если у вас работает традиционный веб-сервер, который может обслуживать оба режима c Контент и исполнение Dynami c SSR.

...