İçindekiler

GoUI aynı bileşeni üç şekilde sunabilir. Modu kayıt anında seçersiniz; route tanımı tek satır kalır.

Modİlk HTTP yanıtıWebSocketTipik kullanım
ModeLive (varsayılan)Boş #app kabuğu + istemci scriptEvetAdmin, ERP, panel
ModeSEODolu HTML + <head> meta + istemci scriptEvet (hydrate)Landing, blog, ürün
ModeStaticDolu HTML + meta, istemci yokHayırYasal, hakkında, düz içerik

Kayıt

registry.Register("orders", NewOrders) // ModeLive

registry.RegisterPage("landing", NewLanding, core.ModeSEO)
registry.RegisterPage("privacy", NewPrivacy, core.ModeStatic)

Register davranışı değişmedi; her zaman ModeLive.

İsteğe bağlı Head meta

SEO/Static bileşenlerde core.HeadProvider uygulayın:

func (l *Landing) Head() core.Head {
    return core.Head{
        Title:       "Acme — Ana sayfa",
        Description: "…",
        Canonical:   "https://example.com/",
        OGTitle:     "Acme",
        OGImage:     "https://example.com/og.png",
    }
}

Page renderer bağlama

import "github.com/zatrano/goui/page"

renderer := page.NewRenderer(page.Options{
    Registry:   registry,
    Translator: translator,
})

gouifiber.Register(app, gouifiber.Options{
    Server: server,
    Page:   renderer,
    Routes: []page.Route{
        {Path: "/", Component: "landing"},
        {Path: "/about", Component: "privacy"},
        {Path: "/admin", Component: "orders"},
    },
})

Tek path:

app.Get("/product", gouifiber.Page(renderer, "product"))
mux.Handle("/product", renderer.Handler("product"))

Mount içinde request

SEO/Static handler *http.Request'i context'e koyar:

func (p *Product) Mount(ctx context.Context) error {
    req := core.RequestFromContext(ctx)
    // req.URL.Query(), path, header…
    return nil
}

ModeSEO hydrate

  1. GET, data-goui-component="ssr" ve data-goui-ssr="1" ile HTML döner.
  2. goui.js WebSocket açar, ilk full render gelir.
  3. İstemci mevcut DOM'u devralır (flash yok), id'yi günceller; sonraki patch'ler normal akar.

ModeLive için elle index.html yazmaya devam edebilirsiniz; page renderer zorunlu değildir.

Örnek

examples/seo-pages: / (SEO), /about (Static), /admin (Live).