Sayfa yazmak

Sayfa uzantısıyla biten her dosya bir sayfadır. Varsayılan uzantılar: .ht.js, .html.js ve TypeScript / JSX türevleri (.ht.ts, .ht.tsx, …).

Çıktı <html> ile başlıyorsa sitelo başına otomatik olarak <!DOCTYPE html> ekler. Biçimlendirme için ht.js (javascript-to-html) tercih edin — şablon motoru ya da React çalışma zamanı olmadan, dize döndüren etiket fonksiyonları.

1. HTML döndüren bir fonksiyon

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

export default ({ params, data, dev }) =>
  html(
    body(h1('Merhaba'))
  )

JSX dosyaları *.ht.jsx / *.ht.tsx kullanır ve react + react-dom kurulu olmasını gerektirir. Aşağıdaki JSX kısıtlamaları bölümüne bakın — sitelo, JSX’i derleme sırasında statik HTML’e çevirir; tarayıcıda bir React uygulaması değildir.

2. Düz bir dize

export default `<html><body><h1>Bundan daha statiği yok</h1></body></html>`

3. Yapılandırılmış bir modül

render, data ve generateStaticParams işlevlerini bir arada tutun:

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

export default {
  generateStaticParams: () => [{ slug: 'hello' }],
  data: ({ params }) => ({ title: params.slug }),
  render: ({ data }) =>
    html(
      body(h1(data.title))
    ),
}

JSX kısıtlamaları

sitelo, tanıdık JSX sözdizimini yazabilmeniz için .ht.jsx / .ht.tsx sayfalarını react-dom/server ile işleyebilir. Bu bir yazım kolaylığıdır — React uygulaması değil.

React tarayıcı için tasarlandı: bağlanan, hidrasyona uğrayan ve olaylara yanıt veren bir bileşen ağacı. sitelo bu çalışma zamanını sayfalarınızla birlikte hiç göndermez. Derleme sırasında JSX’inizi bir HTML dizesine işler, dosyayı yazar ve durur. İstemci tarafında React paketi, hidrasyon ya da tarayıcıda bekleyen sanal DOM yoktur.

Bu nedenle:

Tıklamalar, formlar ve diğer istemci davranışları için varlık hattı üzerinden normal bir betik bağlayın ya da istek anında HTML için sunucu adaları kullanın. JSX sözdizimine ihtiyacınız yoksa ht.js ya da şablon dizelerini tercih edin — React kurulumu yok ve model “derleme sırasında HTML” ile örtüşüyor.

İşleme bağlamı

Her sayfa fonksiyonu tek bir argüman alır:

params

Bu sayfanın rota parametreleri (Record<string, string | string[]>).

data

data() fonksiyonunuzun döndürdüğü her şey.

page

Rota üst verisi (routePath, relativePath, …).

dev

Geliştirme sunucusunda true, derleme sırasında false.