TypeScript
Страницы могут быть .ht.ts / .ht.tsx безо всякой настройки.
definePageModule
Помощники из sitelo/page дают полный вывод типов. Во время сборки импорт подменяется сгенерированным для каждого маршрута модулем, чьи PageParams берутся из имени файла: [slug] → { slug: string }, [...path] → { path: string[] }, [...path]? → { path?: string[] }.
import { definePageModule } from 'sitelo/page'
export default definePageModule({
generateStaticParams: () => [{ slug: 'hello' }],
data: ({ params }) => ({ title: params.slug }),
render: ({ data }) => `<html><body><h1>${data.title}</h1></body></html>`,
})import { html, body, h1 } from 'javascript-to-html'
import { definePageModule } from 'sitelo/page'
export default definePageModule({
generateStaticParams: () => [{ slug: 'hello' }],
data: ({ params }) => ({ title: params.slug }),
render: ({ data }) =>
html(
body(h1(data.title))
),
})import { definePageModule } from 'sitelo/page'
export default definePageModule({
generateStaticParams: () => [{ slug: 'hello' }],
data: ({ params }) => ({ title: params.slug }),
render: ({ data }) => (
<html>
<body>
<h1>{data.title}</h1>
</body>
</html>
),
})Также экспортируются: definePage, defineData, defineStaticParams.
Сгенерированные типы
Объявления записываются в .sitelo/types/ при каждом запуске сервера разработки или сборки. Добавьте эту папку в .gitignore.