Это руководство посвящено тому, чтобы попытаться понять основы, которые вам необходимо знать, чтобы начать использовать getStaticProps.

Почему я должен это читать?

  • Что такое создание статических сайтов, также известное как SSG?
  • Разница между временем сборки и временем запроса
  • Как мы используем SSG в Next.js (с помощью getStaticProps)?
  • Почему мы хотим использовать SSG в нашем веб-приложении?
  • Что такое пакет на стороне клиента в контексте Next.js?

Давайте начнем!

Что такое создание статических сайтов?

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

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

Вот что я делаю:

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

Время сборки по сравнению с Время запроса

В чем разница между этими двумя понятиями?

  • Время сборки происходит, когда наше веб-приложение впервые предоставляется пользователю, когда он открывает свой браузер для посещения нашего веб-сайта.
  • Обратите внимание, что это не то же самое, что делать запросы на нашем веб-сайте — пользователь в этот момент просто открыл свой браузер, чтобы впервые перейти на наш веб-сайт.
  • Контент, предоставляемый во время сборки, — это то, что мы называем SSG.
  • Время запроса, с другой стороны, обслуживает контент на основе запроса пользователя — в основном, обслуживает динамический контент на основе действий пользователя.
  • Контент, предоставляемый во время запроса, — это то, что мы называем SSR.

Как добиться SSG в Next.js?

В Next.js мы используем getStaticProps для достижения SSG.

Вот как вы будете использовать его в своем приложении Next.js.

Мы используем этот getStaticProps в компонентах Pages, а НЕ в приложении Next.js.

getStaticPath, getStaticProps и getServerSideProps работают только на страницах в приложении Next.js, поэтому убедитесь, что вы находитесь в каталоге pages и не ошибетесь. используйте их в одном из ваших компонентов React в вашем каталоге компонентов.

function Blog({ posts }) {
  return (
    <ul>
      {posts.map((post) => (
        <li>{post.title}</li>
      ))}
    </ul>
  )
}
export async function getStaticProps() {  
  const res = await fetch('https://.../posts')
  const posts = await res.json()
  return {
    props: {
      posts,
    },
  }
}
export default Blog

Поток такой:

  1. Пользователь открывает свой браузер и посещает наш веб-сайт по адресу example.com.
  2. Мы обслуживаем весь веб-сайт с помощью Next.js через Vercel.
  3. Серверы Vercel получают исходные данные, необходимые для веб-сайта, например, список изображений для целевой страницы.
  4. Vercel добавляет данные в HTML и подготавливает все, что нужно HTML, перед отправкой в ​​свою технологию CDN (Content Delivery Network).
  5. Готовый HTML кэшируется в выбранной CDN Vercel, а затем CDN передает готовый HTML в ваш браузер. И именно поэтому это так быстро, потому что CDN обычно помещает данные, которые ближе всего к вашему компьютеру. Так что, если вы запросили наш example.com в Японии, то Vercel CDN попытается найти сервер в своей пограничной сети, который находится на кратчайшем расстоянии от вашего компьютера в Японии, например, сервер в Сингапуре.
  6. Наконец, вы видите HTML-код в своем браузере в Японии, предоставленный вам сервером в Сингапуре. CDN — секретный ингредиент молниеносной скорости SSG.

Что такое клиентский пакет?

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

Чем меньше пакет на стороне клиента, тем лучше.

Это фрагмент с официального сайта Next.js:

“getStaticProps всегда выполняется на сервере и никогда на клиенте. С помощью этого инструмента вы можете проверить, что код, написанный внутри getStaticProps, удален из пакета на стороне клиента».

Другой фрагмент, взятый с сайта Next.js:

«Вы можете импортировать модули в области верхнего уровня для использования в getStaticProps. Используемые импорты не будут объединены для клиентской стороны. Это означает, что вы можете писать серверный код непосредственно в getStaticProps, включая получение данных из вашей базы данных».

Почему вы хотите использовать SSG?

  • Более счастливые пользователи благодаря вашему молниеносному веб-сайту
  • Хорошо подходит для SEO-рейтинга в Google (SEO, также известная как поисковая оптимизация).

Как добиться SSR в Next.js?

Хороший вопрос!

Дополнительную информацию о SSR можно найти здесь.

Совет. Чтобы понять, когда использовать SSG или SSR, рекомендуется задать себе один вопрос: зависят ли данные, которые я передаю своему пользователю, от действий пользователя, например. их имя пользователя в форме, которую они должны заполнить онлайн — если это зависит от информации, предоставленной пользователем во время запроса, используйте SSR.

Мы еженедельно публикуем короткие технические руководства, поэтому рассмотрите возможность подписки на наш блог Medium.

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

Но что еще более важно, оставайтесь сосредоточенными!