Next.js - Pré-renderização
Em Next.js, sabemos que ele gera HTML para uma página chamada pré-renderização. Next.JS suporta dois tipos de pré-renderização.
Static Generation- Este método gera a página HTML no momento da construção. Este HTML pré-renderizado é enviado em cada solicitação. Este método é útil para sites de marketing, blogs, sites de listagem de produtos de comércio eletrônico, ajuda, sites de documentação.
Server Side Generation- Este método gera a página HTML em cada solicitação. Este método é adequado quando o conteúdo de uma página html pode variar com cada solicitação.
Pré-renderização por página
Next.JS permite definir o método de pré-renderização para cada página onde a maioria das páginas segue a geração estática e outras páginas usarão a renderização do lado do servidor.
Geração estática sem dados
A geração estática pode ser feita sem dados. Nesse caso, as páginas HTML estarão prontas sem a necessidade de pré-buscar os dados e, em seguida, iniciar a renderização. Os dados podem ser obtidos posteriormente ou mediante solicitação. Essa técnica ajuda a mostrar ao usuário uma interface de usuário sem quaisquer dados, caso os dados demorem para chegar.
Geração estática com dados
A geração estática pode ser feita com dados. Nesse caso, as páginas HTML não estarão prontas até que os dados sejam buscados, pois o HTML pode depender dos dados. Cada componente tem um método especialgetStaticProps que pode ser usado para buscar dados e passar dados como adereços da página para que a página possa renderizar de acordo com os adereços passados.
A função getStaticProps () é executada no momento da construção na produção e é executada para cada solicitação no modo de desenvolvimento.
Vamos criar um exemplo para demonstrar o mesmo.
Neste exemplo, criaremos uma página de atualização index.js e first.js para fazer um acerto no servidor para obter dados.
Vamos atualizar o projeto nextjs usado no capítulo Suporte Global de CSS .
Atualize o arquivo index.js no diretório de páginas para usar o método getServerSideProps (). Este método será chamado por solicitação.
import Link from 'next/link'
import Head from 'next/head'
function HomePage(props) {
return (
<>
<Head>
<title>Welcome to Next.js!</title>
</Head>
<div>Welcome to Next.js!</div>
<Link href="/posts/first"><a>First Post</a></Link>
<br/>
<div>Next stars: {props.stars}</div>
<img src="/logo.png" alt="TutorialsPoint Logo" />
</>
)
}
export async function getServerSideProps(context) {
const res = await fetch('https://api.github.com/repos/vercel/next.js')
const json = await res.json()
return {
props: { stars: json.stargazers_count }
}
}
export default HomePage
Atualize o arquivo first.js no diretório de páginas para usar o método getStaticProps (). Este método será chamado uma vez.
import Link from 'next/link'
import Head from 'next/head'
import Container from '../../components/container'
export default function FirstPost(props) {
return (
<>
<Container>
<Head>
<title>My First Post</title>
</Head>
<h1>My First Post</h1>
<h2>
<Link href="/">
<a>Home</a>
</Link>
<div>Next stars: {props.stars}</div>
</h2>
</Container>
</>
)
}
export async function getStaticProps() {
const res = await fetch('https://api.github.com/repos/vercel/next.js')
const json = await res.json()
return {
props: { stars: json.stargazers_count }
}
}
Inicie o servidor Next.js
Execute o seguinte comando para iniciar o servidor -.
npm run dev
> [email protected] dev \Node\nextjs
> next
ready - started server on http://localhost:3000
event - compiled successfully
event - build page: /
wait - compiling...
event - compiled successfully
event - build page: /next/dist/pages/_error
wait - compiling...
event - compiled successfully
Verificar saída
Abra localhost: 3000 em um navegador e você verá a seguinte saída.
Clique no link da primeira postagem.