Routage

Les routes proviennent directement du système de fichiers, sous 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

Tableau des routes

FonctionnalitéFichierURL
Statiqueindex.ht.js/
Imbriquéeblog/index.ht.js/blog
Dynamiqueblog/[slug].ht.js/blog/my-post
Plusieurs paramètresblog/[year]/[slug].ht.js/blog/2026/my-post
Fourre-toutdocs/[...path].ht.js/docs/api/auth
Fourre-tout optionneldocs/[...path]?.ht.js/docs + niveaux inférieurs
Groupes de routes(admin)/users.ht.js/users

La route la plus spécifique l’emporte : le statique bat le dynamique, et le dynamique bat les fourre-tout. Deux fichiers produisant la même URL provoquent une erreur de build.

generateStaticParams

Les routes dynamiques déclarent quelles pages émettre au build. Avec sitelo (dev), les routes dynamiques se rendent toujours à la demande, sans lister chaque paramètre.

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))
  )

Les valeurs peuvent être des chaînes, des nombres ou des booléens — ils sont convertis en chaîne et encodés pour l’URL. Les paramètres fourre-tout acceptent des tableaux ({ path: ['a', 'b'] }) ou des chaînes séparées par des barres obliques ({ path: 'a/b' }).

Une page dynamique qui ne génère aucune route affiche un avertissement, pour qu’elle ne disparaisse pas silencieusement de votre site.