Pred niekoľkými dňami sa ma Ru opýtala, či je na mojom blogu dostupné RSS.
Hint: nebolo.
Mimochodom, pozrite si práce Ru. Do všetkého, čo robí, vkladá veľa premýšľania, takže u nej nájdete niečo hodnotné.
Faktom je, že zoznam funkcií tohto blogu je veľmi skromný, hlavne preto, že sa snažím budovať blog bez databázy — je postavený úplne okolo gitu a generovaný staticky. Výsledný pracovný postup takéhoto nastavenia vyhovuje mojej závislosti od príkazového riadku, ale musím vyvažovať medzi hackovaním blogu a tvorbou skutočného obsahu. Uhádnete, ktorej z týchto dvoch aktivít sa počas väčšiny roka úspešne vyhýbam.
Tak či onak, Atom alebo RSS kanál je dosť nepostrádateľná funkcia, takže som vytlačil nejaký čas na skutočnú implementáciu, keďže v tomto bode mi nezostávalo žiadne ospravedlnenie pre jeho absencii.
Poznatky z implementácie #
Väčšina práce pre RSS na Sapper (súčasť ekosystému Svelte) bola zdokumentovaná na lacourt.dev a ďalej prispôsobená pre Atom na dev.to. Zvolil som implementáciu Atom namiesto RSS 1.0 alebo RSS 2.0, pretože Atom je definovaný štandard IETF, čo znamená, že je menej pravdepodobné, že sa nečakane zmení, čo poskytuje potenciál pre dlhodobú stabilitu.
Štruktúra súboru RSS je XML, čo znamená, že HTML nie je bez úprav akceptované. Moje HTML je generované automaticky, takže som sa pokúšal doladiť parametre, aby bolo generované HTML čo najkompatibilnejšie. Po vyriešení reťazca niekoľkých chýb som uviazol, preto som hľadal iný prístup.
HTML samozrejme môže byť zahrnuté v XML a existujú aspoň dva bežné spôsoby. Jeden je kódovanie obsahu v Base64 a druhý je použitie tagu CDATA. Zvolil som CDATA, keďže som nenašiel informáciu, či RSS klienti dekódujú Base64 automaticky alebo existuje nejaký spôsob, ako im to povedať. Navyše CDATA je čitateľnejšie — pri manuálnom prezeraní vygenerovaného RSS súboru okamžite vidím, čo sa deje.
Taktiež som objavil, že existuje knižnica pre kanály s názvom
xast-util-feed, ktorá je
súčasťou ekosystému unified.js. Využívam mnoho
komponentov, ktoré poskytujú pre transformáciu Markdownu do HTML, a toto by
sa tiež dalo využiť. Možno to použijem v budúcnosti ako súčasť
optimalizácií. Momentálne je súbor pravdepodobne väčší ako 1 MB a obsahuje
všetky CSS triedy a podobné veci, ktoré možno nie sú potrebné, takže je tu
určite priestor na zlepšenie.
Nakoniec som zatiaľ poskytol kategórie ako zreťazený reťazec, keďže mnohé príspevky nemajú jasnú kategóriu a plánujem to v blízkej dobe trochu prepracovať. Rozhodnutie, či poskytnúť len úryvok alebo celý príspevok, bolo pre mňa jednoduché — Kev to na svojom blogu presne pokryl a rozptýlil akékoľvek pochybnosti.
Kanál by mal byť automaticky objavený cez peterbabic.sk, ale ak nie,
cesta k nemu je na https://peterbabic.sk/atom.xml. Vychutnajte si!
Toto je 57. príspevok z #100daystooffload.