馃Л Rutas din谩micas y pre-renderizado con Next.js

Next.js Rutas Din谩micas

馃Л Rutas din谩micas y pre-renderizado

Aprende a crear rutas din谩micas para tus posts y c贸mo pre-renderizar las p谩ginas para mejorar SEO y rendimiento.


馃搶 脥ndice de esta entrada:

  1. 馃搨 Qu茅 son las rutas din谩micas en Next.js
  2. 馃搫 Creando rutas din谩micas para cada post
  3. ⚡ Pre-renderizado con getStaticProps y getStaticPaths
  4. 馃攧 Probando las p谩ginas pre-renderizadas

馃搨 Qu茅 son las rutas din谩micas en Next.js

Las rutas din谩micas permiten generar p谩ginas seg煤n un par谩metro de URL. Por ejemplo, /posts/primer-post se genera autom谩ticamente a partir del nombre del archivo.

Next.js usa carpetas entre corchetes [param] para definir rutas din谩micas:

app/posts/[slug]/page.tsx
    

馃搫 Creando rutas din谩micas para cada post

En app/posts/[slug]/page.tsx, usamos el par谩metro slug para cargar el post correcto:

import fs from 'fs';
import path from 'path';
import matter from 'gray-matter';

export default function Post({ params }: { params: { slug: string } }) {
  const postsDirectory = path.join(process.cwd(), 'app/posts');
  const filePath = path.join(postsDirectory, `${params.slug}.md`);
  const fileContents = fs.readFileSync(filePath, 'utf8');
  const { data, content } = matter(fileContents);

  return (
    <div className="p-6">
      <h1 className="text-2xl font-bold mb-4">{data.title}</h1>
      <p className="text-gray-700">{content}</p>
    </div>
  );
}
    

⚡ Pre-renderizado con getStaticProps y getStaticPaths

Next.js permite **pre-renderizar** p谩ginas en el momento de la compilaci贸n. Esto significa que tus posts estar谩n listos como HTML est谩tico, mejorando velocidad y SEO.

import fs from 'fs';
import path from 'path';
import matter from 'gray-matter';

export async function getStaticPaths() {
  const postsDirectory = path.join(process.cwd(), 'app/posts');
  const filenames = fs.readdirSync(postsDirectory);

  const paths = filenames.map(name => ({
    params: { slug: name.replace('.md', '') }
  }));

  return { paths, fallback: false };
}

export async function getStaticProps({ params }) {
  const postsDirectory = path.join(process.cwd(), 'app/posts');
  const filePath = path.join(postsDirectory, `${params.slug}.md`);
  const fileContents = fs.readFileSync(filePath, 'utf8');
  const { data, content } = matter(fileContents);

  return { props: { data, content } };
}
    

Con esto, cada post se genera de manera est谩tica y se sirve r谩pido al usuario.

馃攧 Probando las p谩ginas pre-renderizadas

Ejecuta el servidor de desarrollo:

npm run dev
    

Abre http://localhost:3000/posts/primer-post y verifica que tu post se cargue correctamente, ahora ya como p谩gina pre-renderizada.


馃挕 Consejo: Las rutas din谩micas y el pre-renderizado son la base de cualquier blog moderno en Next.js.

Publicar un comentario

0 Comentarios