Next.JS: Как сделать ВСЕ запросы на стороне сервера

Я создаю приложение Next.JS, которое будет получать данные из Python API и базы данных Postgres.

Обычно это было бы просто, но требования таковы, что мне нужно отправлять все запросы со стороны сервера, а не с клиента пользователя.

Я работал с getInitialProps, но я не уверен, что это полное решение, которое мне нужно, из-за этой строки в README:

For the initial page load, getInitialProps will execute on the server only. getInitialProps will only be executed on the client when navigating to a different route via the Link component or using the routing APIs.

Похоже, что getInitialProps предназначен для начальной загрузки страницы, а не для последующей выборки данных на стороне сервера.

Как мне разработать приложение Next.JS таким образом, чтобы все запросы приходили со стороны сервера?

Заметки:

  • Это нормально, что каждый запрос по существу приводит к начальной загрузке страницы.
  • Пользовательский Клиент может разговаривать с сервером Node (Next.JS), поскольку он публично открыт. В настоящее время я экспериментирую с упаковкой Next.JS в экспресс-сервер.

Ты заранее за любую помощь

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
9
0
9 532
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Я нашел решение, обернув Next.JS в Express!

Я отправил простой пример проекта на GitHub здесь

В репозитории есть хороший README, а также комментарии в коде, подробно описывающие, что происходит.

Краткое изложение:

  • Оберните Next.JS в экспресс-сервер. Явно визуализируйте страницы, вызывая nextApp.render(...), что неявно происходит в стандартных приложениях Next.JS. См. server.js
  • Используйте экспресс-маршрутизацию. Сделайте запросы на стороне сервера перед рендерингом страниц с помощью nextApp.render(...). См. server.js.
  • Используйте стандартные теги привязки, чтобы гарантировать, что запросы страниц попадут на экспресс-сервер. См. index.js
  • nextApp.render предоставляет переданные значения на страницу в параметре контекста (ctx) getInitialProps. Вы можете сделать эти значения доступными на страницах this.props, вернув их в getInitialProps. См. stars.js

Предложения и улучшения приветствуются!

Отличная работа! Это похоже на Razzle

SandyWeb 20.01.2019 23:41

Это вообще плохая идея.

Вся суть SPA - предотвратить полную загрузку страницы.

Вы можете использовать getInitialProps для извлечения данных при запросе начальной страницы и при последующих переходах, поскольку он вызывается для каждой страницы.

Далее предлагается использовать API для общения с сервером.

Думаю, это делается просто с помощью getServerSideProps()Официальные документы. Это так просто, как на самом деле: «Если вы экспортируете асинхронную функцию getServerSideProps со страницы, Next.js предварительно отрендерит эту страницу по запросу каждый, используя данные, возвращенные getServerSideProps»

Другие вопросы по теме