Perutean
Rute datang langsung dari sistem berkas di bawah 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.htmlTabel rute
| Fitur | Berkas | URL |
|---|---|---|
| Statis | index.ht.js | / |
| Bersarang | blog/index.ht.js | /blog |
| Dinamis | blog/[slug].ht.js | /blog/my-post |
| Beberapa parameter | blog/[year]/[slug].ht.js | /blog/2026/my-post |
| Penangkap semua | docs/[...path].ht.js | /docs/api/auth |
| Penangkap semua opsional | docs/[...path]?.ht.js | /docs + lebih dalam |
| Grup rute | (admin)/users.ht.js | /users |
Rute yang lebih spesifik menang: statis mengalahkan dinamis, dinamis mengalahkan penangkap semua. Dua berkas yang menghasilkan URL sama adalah galat build.
generateStaticParams
Rute dinamis menyatakan halaman mana yang dihasilkan saat build. Di sitelo (pengembangan), rute dinamis tetap dirender sesuai permintaan tanpa perlu mendaftar setiap parameter.
export function generateStaticParams() {
return [
{ slug: 'hello-world' },
{ slug: 'my-first-post' },
]
}
export default ({ params }) => `
<html><body><h1>${params.slug}</h1></body></html>
`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))
)export function generateStaticParams() {
return [
{ slug: 'hello-world' },
{ slug: 'my-first-post' },
]
}
export default function Post({ params }) {
return (
<html>
<body>
<h1>{params.slug}</h1>
</body>
</html>
)
}Nilainya bisa berupa string, angka, atau boolean — semuanya diubah menjadi string dan dikodekan untuk URL. Parameter penangkap semua menerima larik ({ path: ['a', 'b'] }) atau string berpemisah garis miring ({ path: 'a/b' }).
Halaman dinamis yang menghasilkan nol rute akan mencetak peringatan, sehingga ia tidak bisa lenyap diam-diam dari situs Anda.