Programiranje

HTMX za jednostavniji web razvoj

PHOTO:

htmxmpaspaapi

Danas programeri pišu puno nepotrebnog koda. Kako se već godinama bavim samo web razvojem onda mi je problem poznat iz te perspektive, pretpostavljam da je i u drugim područjima razvoja aplikacija prisutan isti problem, no web razvoj je taj problem podigao na najveću potenciju.

Kao primjer možemo uzeti najčešći backend zadatak - razvoj API-ja. Obično krenete od nekog modela i na temelju njega napravite API. U velikom broju slučajeva REST API se radi po istim obrascima pa pišete manje-više isti kod, mijenjate samo modele i nazive polja. I onda još dodate testove po istom principu. Ništa komplicirano, dosadan i ponavljajući zadatak. Imate obrasce po kojima možete jednostavno izgenerirati kod. Upravo to radi API Bakery, ispečen u pekari Dobrog Koda.

API Bakery rješava problem pisanja dosadnog ponavljajućeg koda na jedan način, ali u slučajevima kad imamo gotove podatkovne modele mogli bi imati dinamički API bez da se za svaki model ili API generira kod. Za Django web framework izrada takvog API-ja bi bio relativno jednostavan zadatak. U nekoliko prilika napravio sam takav dinamički API, uglavnom za potrebe eksporta podataka (listanje i dohvat jednog sloga), ali u par slučajeva kreirao sam i primitivan REST API koji je omogućio i pisanje za svaki Django model u aplikaciji. Moja rješenja su bila za interne potrebe i uštedjela su mi dosta vremena koje bi potrošio za razvoj. Malo me čudi da nema takvih rješenja otvorenog koda, kao da su programeri plaćeni po liniji koda pa ih ne zanima da pišu manje?!

Možda je problem u kolotečinama u kojima je zapeo razvoj pa sada svi idu po istom tragu i premalo se preispituju metode i načini razvoja? Broj programera je sve veći, veliki broj je onih koji su to postali na relativno brzi način, pa kao leminzi slijede jedan drugoga bez obzira na to kuda se kolona kreće?

SPA kao srebrni metak?

Najveće komplikacije sebi su priredili frontend developeri. CSS se više ne može napraviti na jednostavan način, za sve se koristi framework i procesor koji generira kod, a JavaScript se utapa u beskonačnoj mreži node modula i (opet) generiranog koda. Više nitko ne radi web na jednostavan način.

Čak su i neki portali pojurili u budućnost i zamijenili su MPA (multi-page application) vrlim, novim SPA (single-page application). SPA je dobro rješenje za web aplikacije koje su desktop like, ali za klasične portale razvoj je kompliciraniji, duži, potrebno je dodavati funkcionalnosti koje već imate kod multi-page rješenja i u konačnici sve ispada skuplje.

U većini članaka koji uspoređuju SPA i MPA možete pročitati da odvajanjem backenda i frontenda u SPA rješenjima dobijete na brzini razvoja, ali u praksi to obično znači da ste dobili novi niz problema na koje možda niste računali i na kojima razvoj zapinje.

Može i bez JavaScripta

Kod MPA aplikacija i do sada se koristio JavaScript da bi se dobila interaktivnost. Nekada se uglavnom koristio jQuery, a ako je neka aplikacija počela koristiti neki od modernijih JavaScript frameworka obično bi to bio prvi korak prema SPA.

U posljednje vrijeme pojavilo se nekoliko rješenja koja omogućuju da MPA dobiju na interaktivnosti na puno jednostavniji način i to bez potrebe da developeri napišu i redak JavaScript koda. Ispod haube i dalje JavaScript odrađuje svoj dio posla, ali developer ga ne piše te se smanjuje vrijeme potrebno za izradu željenih funkcionalnosti.

Jedno takvo rješenje je htmx koji uz pomoć atributa omogućava određivanje željenog ponašanja i pokriva 90% potreba za interaktivnošću MPA stranica - AJAX, CSS tranzicije, web sockete, server sent evente. Nije htmx jedino rješenje te vrste, Django pored htmxa može koristiti i Unicorn, PHP programeri imaju Livewire, Elixir ima LiveView, Ruby on Rails StimulusReflex, a tu je i Hotwire. Svi se baziraju na sličnom principu i smanjuju potrebu za pisanjem istog ili jako sličnog koda.

htmx i slična rješenja skraćuju vrijeme razvoja klasičnih web stranica (MPA) i ako se još uvijek bavite njime, ili se vraćate iz SPA svijeta, vrijedi pogledati što vam mogu ponuditi. Zašto bi pisali nepotreban kod ako to nije potrebno?



Ako prvi put komentirate moguće je da se vaš komentar neće isti tren pojaviti na stranici već nakon dodatne provjere. Hvala na doprinosu i strpljenju.