İçindekiler
Bu rehber, satır içi core.RenderTemplate kullanan component’leri .goui.html
dosyalarına ve core.ViewComponent arayüzüne taşır.
Geriye dönük uyumluluk: core.RenderTemplate kaldırılmıyor. Mevcut
component’ler çalışmaya devam eder. Migrasyon zorunlu değildir.
Ne zaman değer?
RenderTemplate’te kalın |
.goui.html’e geçin |
|---|---|
| Tek satırlık küçük markup | Çok bölümlü sayfa / layout |
| Component’ler arası paylaşım yok | Partial / component / slot paylaşımı |
| Prototip / geçici demo | Sık düzenlenecek üretim UI |
Adım adım
1. Önce
func (c *Counter) Render() (string, error) {
return core.RenderTemplate(`<div class="counter">
<span>{{.Count}}</span>
<button g-click="increment">+</button>
</div>`, c)
}
2. View’ı ayırın
views/counter.goui.html:
<div class="counter">
<span>{{ .Count }}</span>
<button type="button" g-click="increment">+</button>
</div>
3. View (+ stub Render)
func (c *Counter) View() string { return "counter" }
func (c *Counter) Render() (string, error) {
return "", gouitemplate.ErrViewRenderDirect
}
core.Component için Render hâlâ gerekir. template.Wrap, ViewComponent
için stub’ı çağırmaz.
4. Registry bağlantısı
tmplReg, err := gouitemplate.NewRegistry(gouitemplate.Config{
Root: filepath.Join(exampleDir, "views"),
})
if err != nil {
log.Fatal(err)
}
defer tmplReg.Close()
coreReg := core.NewRegistry()
_ = coreReg.Register("counter", gouitemplate.Wrap(tmplReg, func() core.Component {
return &Counter{}
}))
5. Doğrulama
- Uygulamayı
go buildedin - Event’leri deneyin; dirty tracking
MarkDirty/ResetDirtyile sürer (Wrapbaşarılı view render sonrası dirty’yi temizler)
Referans: examples/counter-view
(değiştirilmemiş examples/counter yanında).
Kontrol listesi
- View dosyası
Config.Rootaltında;View()dot-path ile eşleşiyor - Factory
template.Wrapile kayıtlı -
@propskullanıyorsanız prod’daStrictProps -
WatchForChangesyalnızca geliştirmede