Rutas

Las rutas salen directamente del sistema de archivos, dentro de src/.

src/
  index.ht.js              → /
  about.ht.js              → /about
  blog/
    index.ht.js            → /blog
    [slug].ht.js           → /blog/:slug
  docs/
    [...path]?.ht.js       → /docs, /docs/a, /docs/a/b, ...
  (admin)/
    users.ht.js            → /users
  404.ht.js                → dist/404.html

Tabla de rutas

FunciónArchivoURL
Estáticaindex.ht.js/
Anidadablog/index.ht.js/blog
Dinámicablog/[slug].ht.js/blog/my-post
Varios parámetrosblog/[year]/[slug].ht.js/blog/2026/my-post
Comodíndocs/[...path].ht.js/docs/api/auth
Comodín opcionaldocs/[...path]?.ht.js/docs + rutas más profundas
Grupos de rutas(admin)/users.ht.js/users

Gana la ruta más específica: la estática vence a la dinámica, y la dinámica a los comodines. Que dos archivos generen la misma URL es un error de compilación.

generateStaticParams

Las rutas dinámicas declaran qué páginas emitir en tiempo de compilación. Con sitelo (dev), las rutas dinámicas se siguen renderizando bajo demanda sin necesidad de enumerar cada parámetro.

import { html, body, h1 } from 'javascript-to-html'

export function generateStaticParams() {
  return [
    { slug: 'hello-world' },
    { slug: 'my-first-post' },
  ]
}

export default ({ params }) =>
  html(
    body(h1(params.slug))
  )

Los valores pueden ser cadenas, números o booleanos — se convierten a cadena y se codifican para la URL. Los parámetros comodín aceptan arrays ({ path: ['a', 'b'] }) o cadenas separadas por barras ({ path: 'a/b' }).

Una página dinámica que no genera ninguna ruta muestra un aviso, para que no desaparezca de tu sitio en silencio.