Маршрутизация
Маршруты берутся напрямую из файловой системы внутри 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Таблица маршрутов
| Возможность | Файл | URL |
|---|---|---|
| Статический | index.ht.js | / |
| Вложенный | blog/index.ht.js | /blog |
| Динамический | blog/[slug].ht.js | /blog/my-post |
| Несколько параметров | blog/[year]/[slug].ht.js | /blog/2026/my-post |
| Перехватывающий | docs/[...path].ht.js | /docs/api/auth |
| Необязательный перехватывающий | docs/[...path]?.ht.js | /docs и глубже |
| Группы маршрутов | (admin)/users.ht.js | /users |
Побеждает более конкретный маршрут: статический важнее динамического, динамический важнее перехватывающего. Два файла, дающие один и тот же URL, — ошибка сборки.
generateStaticParams
Динамические маршруты объявляют, какие страницы создавать при сборке. В sitelo (dev) динамические маршруты по-прежнему рендерятся по запросу, без перечисления каждого параметра.
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>
)
}Значениями могут быть строки, числа или логические значения — они приводятся к строке и кодируются для URL. Перехватывающие параметры принимают массивы ({ path: ['a', 'b'] }) или строки с косой чертой ({ path: 'a/b' }).
Динамическая страница, не создавшая ни одного маршрута, выводит предупреждение, чтобы не исчезнуть с сайта незаметно.