Мы можем легко создавать серверные приложения React и статические сайты Next.js.

В этой статье мы рассмотрим промежуточное ПО маршрутизации и режим предварительного просмотра с Next.js.

Поддержка промежуточного программного обеспечения Connect / Express

Мы можем использовать связующее ПО, совместимое с Connect.

Например, мы можем добавить промежуточное ПО cors, установив его и добавив в наше приложение Next.js.

Для его установки запускаем:

npm i cors

or

yarn add cors

Затем мы можем добавить его в наш маршрут API, написав:

import Cors from 'cors'
const cors = Cors({
  methods: ['GET', 'HEAD'],
})
function runMiddleware(req, res, fn) {
  return new Promise((resolve, reject) => {
    fn(req, res, (result) => {
      if (result instanceof Error) {
        return reject(result)
      }
      return resolve(result)
    })
  })
}
async function handler(req, res) {
  await runMiddleware(req, res, cors)
  res.json({ message: 'hello world' })
}
export default handler

Мы импортировали функцию Cors.

Затем мы используем его для создания cors промежуточного программного обеспечения.

Мы можем указать методы запроса, которые можно использовать с маршрутом.

Функция runMiddleware запускает промежуточное программное обеспечение, вызывая fn функцию промежуточного программного обеспечения, а затем разрешает result в случае успеха.

В противном случае обещание отклоняется.

handler - это обработчик маршрута, который запускает промежуточное ПО и затем возвращает ответ.

Помощники ответа

Next.js поставляется с различными помощниками ответа.

Метод res.status(code) позволяет нам установить код состояния ответа.

code - это код состояния HTTP.

res.json(json) позволяет нам отправить ответ в формате JSON.

json - допустимый объект JSON.

res.send(body) позволяет нам отправлять HTTP-ответ, где body - строка, объект или буфер.

res.redirect принимает необязательные status и path, чтобы позволить нам перенаправлять на определенный путь или URL.

Значение по умолчанию status - 307.

Например, мы можем вызвать их, написав:

export default (req, res) => {
  res.status(200).json({ name: 'hello' })
}

Их можно связать вместе.

Режим предварительного просмотра

Мы можем предварительно просмотреть маршруты, которые создаются статически.

В Next.js есть функция предварительного просмотра, чтобы решить эту проблему.

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

Чтобы использовать его, мы вызываем метод res.setPreviewData для предварительного просмотра.

Например, мы можем написать:

export default (req, res) => {
  res.setPreviewData({})
  res.end('Preview mode')
}

чтобы включить его.

Безопасный доступ к данным

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

Для этого мы создаем маршрут API предварительного просмотра, создав файл pages/api/preview.js:

export default async (req, res) => {
  const response = await fetch(`https://yesno.wtf/api`)
  const data = await response.json();
  res.setPreviewData(data)
  res.redirect('/post')
}

Мы получаем данные из API и вызываем setPreviewData, чтобы получить их из функции getStaticProps в файле JavaScript нашей страницы.

Затем мы перенаправляем в наш файл, чтобы увидеть данные на нашей странице.

В pages/post.js мы пишем:

function Post({ data }) {
  return (
    <div>{data && data.answer}</div>
  )
}
export async function getStaticProps(context) {
  if (context.preview) {
    return {
      props: {
        data: context.previewData
      }
    }
  }
  return { props: { data: { answer: 'not preview' } } }
}
export default Post

Мы проверяем, включен ли режим предварительного просмотра, проверяя свойство context.preview.

Если это true, то мы получаем данные предварительного просмотра от context.previewData.

Затем мы отображаем data в нашем Post компоненте.

Заключение

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

Кроме того, мы можем использовать промежуточное ПО Connect или Express в наших приложениях Next.js.

Понравилась эта статья? Если да, то получите больше похожего контента, подписавшись на наш канал YouTube!