Hak(ić) u arhitekturi JavaScript kôda – trend za 2008 – “bibliotekarski problem”
Nakon povampirenja povećane primene JavaScripta od pre 3-4 godine, popularisalo se u primeni nekoliko klijentskih biblioteka (to i vrapci znaju): Ajile, Dojo toolkit, Echo, ExtJS, JQuery, MochiKit, MooTools, Prototype, Rialto, Rico, script.aculo.us, Yahoo! UI Library … ima ih još… Interesanto je dalje, da je postojanje ove palete stvorilo drugu – paletu JavaScript programera. Nove specijalnosti – nova kasta, novi fetiš, novo pleme…
Biranje “prave” uvek je kompromis, a o programerskim fetišima sam se naterao da ne razmišljam. E sad, nije o tome reč, a ako o tome neko želi iole racinalno mišljenje evo mu polaznih linkova:
- Mootools protiv jQuery protiv Prototype
- Prototype protiv jQuery
- Mootools protiv jQuery protiv Prototype protiv ext protiv Dojo
Može se reći da iza svake od navedenih biblioteka stoji barem nekoliko čovek/godina kodiranja i testiranja i najbolje prakse. Zbog toga nema snažnijeg razloga da ovakve biblioteke sami razvijamo. Kada se uz korišćenje jedne od njih iskodira neki deo web apikacije, biblioteku dalje održava open-source zajednica a naš deo kôda bi (teoretski) trebao da radi i na sledećim stabilnijim i performantnijim verzijama. Mod(ula)(e)rno, nema šta… ali ne i bez glavobolje.
Hakić na koji želim ukazati zapravo je trend u arhitekturi. Dešava se da krenete da web aplikaciju razvijate sa jednom bibliotekom, a kasnije pronađete savršenu komponentu za vašu web aplikaciju ali pisanu na drugoj biblioteci. Problem je što bi sad trebalo u browser “dovući” obe ne baš male biblioteke, ugroziti mu stabilnost. Ponekad se JavaScript biblioteke (programerskim žargonom rečeno) “kolju”, odnosno smetaju jedna drugoj da rade ispravno. Tipično i jednostavno je recimo različito tretiranje window.onload eventa… Apsurd je veći jer obe biblioteke imaju iste ili slične metode/funkcije – redudantan kôd. Drugi problem biblioteka je da se često iz njih koristi tek nekoliko procenata kôda. Kasnije ću se pozvati na sve ove problem, pa ih sada nazivam – “bibliotekarski problemi” (neću sad braniti zašto baš takvo ime).
Hak u arhitekturi je zapravo dodatna mogućnost neke JavaScript komponente da rade na više biblioteka. To na primeru ExtJS izgleda otprilike ovako (izvor slike):

Ovo je arhitektura tog haka na u primeru sa ExtJS, ali se treba šire posmatrati. Dakle neka komponenta (gornji široki plavi bar) može da radi na na baznoj biblioteci (u datom primeru je to: ext-base.js), ali se preko tzv. adaptera može koristiti i na drugim bibliotekama (zeleni, crveni i narandžasti pravougaonik). Adapter je po pravilu malo parče kôda – tzv. apstrakcija (proksiranje) prema drugoj biblioteci. Na taj način rešavaju se “bibliotekarski problemi”.
Ovaj “pattern” (ili hak) u arhitekturi ovih meseci postaje trend. Za kraj evo jedne popularne komponente, sa rešenim “bibliotekarskim problemom”. Javite se ako pronađete još JS komponenti u ovoj arhitekturi.
