Önbelleğe alınmış fragment'lerden kurulan sayfalar.

collage, sunucuda render edilen siteler için bir Go framework'ü. Bir sayfa, fragment'lerin etrafını saran bir layout'tur; her fragment kendi verisini çeker, sayfa da neyden kurulduysa ona göre önbelleğe alınır ve geçersiz kılınır. İstemci framework'ü yok, JavaScript build adımı yok, bağımlılık yok.

go install github.com/Elagoht/collage/cmd/collage@latest
collage new mysite && cd mysite && go mod tidy
collage dev

Component değil, fragment

Bir şablon, bir data handler ve dışarı açtığı slot'lar. Kardeş fragment'ler verilerini aynı anda çeker; sayfa yine sırasıyla yazılır.

Neye bağlıysa ona göre önbellekte

Sayfalar ve veriler etiket taşır. Bir yazarı değiştirin; tek bir çağrı hem yazarı hem onu gösteren her sayfayı önbellekten düşürür.

JavaScript'siz formlar

Action'lar POST isteklerini yerleşik sahtecilik korumasıyla karşılar; önbellekteki bir sayfa da form taşıyabilir.

Sunulur ya da dışa aktarılır

Tek bir program hem sunucu hem statik site üreticisidir. Bu site ikincisi.

Başlarken

  • Girişcollage nedir, hangi fikrin üzerine kurulu ve ne zaman doğru araçtır.
  • KurulumGo'yu ve collage CLI'ını kurun, collage new ile bir proje iskeleti oluşturun ve collage dev altında çalıştırın.
  • İlk sayfanızUygulamalı bir eğitim — bir layout, tipli bir data handler ve bir şablonla bir tarif sayfası kurun, ardından bir slot'a ikinci bir fragment ekleyin.

Temel kavramlar

  • Sayfalar ve layout'larSayfa nedir, layout'u ve içeriği nasıl bir araya gelir, ona hangi yollar ulaşır, nasıl önbelleğe alınır, başarısız olduğunda ne gösterir ve kayıt ona ne yapar.
  • Fragment'ler ve slot'larFragment'ler, sundukları slot'lar, biri başarısız olduğunda ne olduğu ve render sırasında içerikten doldurulan slot'lar.
  • Data handler'larBir fragment'in verisini nasıl çektiği — tipli handler sözleşmesi, bağımlılık etiketleri, 404'ler, eşzamanlılık, render bağlamı, veri paylaşımı ve zaman aşımları.
  • ŞablonlarŞablonlar nerede durur, nasıl yüklenir ve gömülür, geliştirmede nasıl yeniden yüklenir; slot'lar, yerleşik ve özel fonksiyonlar ve kaçışlama.

Site kurmak

  • Önbellekcollage render edilmiş sayfaları ve onları oluşturan veriyi nasıl önbelleğe alır, neyi atması gerektiğini nasıl bilir.
  • Formlar ve action'larForm gönderimlerini, fetch çağrılarını ve webhook'ları action'larla karşılamak ve onları istek sahteciliğine karşı korumak.
  • Bağlantılar ve locale'lerBir siteyi birkaç dilde sunmak ve sayfalara adlarıyla bağlantı vererek bağlantıların onları her locale'de izlemesini sağlamak.
  • Head ve SEOBaşlıklar, meta etiketleri, stil dosyaları ve structured data; onları bilen fragment bildirir, layout yerleştirir.
  • Statik dosyalarStil dosyalarını, script'leri, görselleri ve indirmeleri bir dizinden ya da gömülü bir dosya sisteminden, bir yıl önbellekte tutulabilen URL'lerle sunmak.
  • Document'ler: sitemap'ler, feed'ler, robots.txtHTML yerine bayt dönen route'lar — sitemap'ler, feed'ler, robots.txt, JSON — sayfalar gibi önbelleğe alınır ve geçersiz kılınır.
  • Middleware ve kendi API'nizapp.Use ile standart net/http middleware'leri, collage.Vary ile bir header'a bağlı önbellek anahtarları ve app.Handle ile kendi http.Handler'ınız.
  • ÖnizlemelerEditörlere yayımlanmamış taslakları gerçek sitede gösterin; önbellek onlara yayımlanmış sayfayı, başkalarına da taslağı sunmasın.

Yayına almak

  • Statik dışa aktarmaSiteyi collage export ile statik dosyalara render edin — neler yazılır, neler neden atlanır, dinamik yollar ve statik barındırma hizmetinde yayımlama.
  • Yayına almaBinary'yi derleyin, bir container'da ya da systemd altında çalıştırın, production'ın gerektirdiklerini ayarlayın ve TLS'in arkasına koyun.
  • TestGerçek uygulamayı app.Handler() ve net/http/httptest üzerinden test edin — sayfalar, sahtecilik token'larıyla formlar, document'lar ve statik dışa aktarma.

Genişletmek

  • Plugin kullanmakBir plugin'in neler yapabildiği, bir plugin'in nasıl kaydedilip yapılandırıldığı ve yayımlanmış üç plugin.
  • Plugin yazmakPlugin sözleşmesi, Host ve ConfigHost'un sundukları, her hook ve neyi değiştirebileceği, testleriyle birlikte eksiksiz bir plugin.

Başvuru

  • collage CLIcollage CLI'nin her komutu — new, dev, build, export, serve, version ve help — flag'leri ve tam olarak neyi çalıştırdığıyla.
  • Yapılandırmacollage.Config ve alt yapılarının her alanı, varsayılan değerleri ve doğrulamanın neyi denetlediği.
  • Şablon fonksiyonlarıYerleşik şablon fonksiyonlarının tamamı — slot, hoist, asset, stylesheet, csrfToken, URL fonksiyonları ve metin yardımcıları — imzaları, örnekleri ve sınır durumlarıyla.
  • Hatalarcollage'ın dışa açtığı her hata değeri, nereden geldiğine göre gruplanmış hâlde; ne anlama geldiği ve ne yapmanız gerektiğiyle birlikte.