
Petri Niemi
Software Specialist
Olin hiljattain tilaisuudessa, jossa lueteltiin hyvän blogikirjoituksen ominaisuuksia. Kirjoituksen pitäisi olla ajankohtainen, omaperäinen, kiinnostava ja mahdollisesti hauskakin. Viimeisen vaatimuksen täyttäminen on valitettavasti melko hankalaa. Kuten moni kohtalotoveri tietää, web-kehittäjän työarjessa ilonaiheet ovat kovin harvassa – ellei sitten itkunsekaisia “eihän tässä ole mitään järkeä” -kohtauksia lasketa hauskoiksi hetkiksi. Työkavereiden mielestä ne voivat sellaisia tietty ollakin.
Yritetään siis olla ainakin ajankohtaisia.
JavaScriptiä bolognese-kastikkeella, kiitos
Olet varmaan huomannut, että JavaScriptillä on äärimmäisen helppoa saada aikaan täysin käsittämätöntä ja ylläpidettävyydeltään painajaismaista koodia. Vai tuleeko omasta koodistasi aina automaattisesti priimaa, jopa silloin kun tavoitteena olisi ihan vain keskiverto?
Meille tavallisille kuolevaisille JavaScript on yllättävän hankala kieli. Kuten jo edellisessä HTML5/JavaScript-blogissanikin ohimennen vihjailin, se on yksi hankalimmista kielistä, joita olen ikinä joutunut opettelemaan. Esimerkiksi jQueryn voimalla pääsee helposti liikkeelle ja saa kauniita asioita vilkkumaan selaimessa, mutta ennen pitkää tällä tiellä päädytään suoraan italialaiseen ravintolaan aterioimaan JavaScriptiä.
Mikäli käsitteet HTML5-sovellus tai SPA (Single Page Application) eivät ole entuudestaan tuttuja, suosittelen tutustumaan niihin huolella. Näiden sekä työpöytä- että mobiili-webissä nousevien trendien myötä JavaScriptin tarve web-sovelluksissa nimittäin vain kasvaa. Sitä myöden koodirivien määrä paisuu jo keskikokoisissakin sovelluksissa helposti tuhansiin. Eikä tällaista kokonaisuutta enää pidetäkään näpeissä pelkän jQueryn avulla.
Kokeile vaikka kirjautumista SPA-mallia toteuttavalle Gmail- tai Hotmail-tilille, kun selaimesta on JavaScript otettu pois päältä. Kuinka monta puhdasta HTML-koodiriviä löydät, jos tutkit meilin lähdekoodia (selainikkunassa oikean napin takaa “view source” tai “näytä lähdekoodi”)?
Kas, sehän on vanha tuttu MVC – tervetuloa mukaan!
Viimeksi Tieturin JavaScript-ohjelmoinnin jatkokurssia pitäessäni puheeksi tuli MVC-mallin rooli JavaScript-kehityksessä. Samaan kasaan mukaan voidaan sotkea myös muut MV*-mallit, kuten MVP ja MVVM. Koska kielessä itsessään ei toistaiseksi ole edes kunnollista sisäänrakennettua luokka- tai moduulimallia, pitää tällaiset rakenteet toteuttaa itse tai käyttää tarkoitukseen valmiiksi tehtyä kirjastoa.
Jos aivan triviaalitapaukset jätetään pois, niin ainoa keino välttyä keksimästä pyörää uudelleen on käyttää valmista kirjastoa. Yksi ensimmäisistä ja edelleen käytetyimmistä MV*-kirjastoista on backbone.js, jota olen käyttänyt kurssiesimerkkinä erikseen pyydettäessä. Esittelyä seuraa aina luonteva kysymys: “Onko tämä nyt se paras/helpoin/kattavin kirjasto tähän tarkoitukseen?” Tähän ei löydy yksiselitteistä vastausta. Sopivuus ja kattavuus kun riippuvat niin kovin paljon käyttötarpeesta ja helppous taas on melko subjektiivista.
Kirjaston valinta jää siis valitettavasti jokaiselle itselleen ja se voi olla raakaa ja aikaavievää työtä. Apuna voi kuitenkin käyttää esim. kätevää TodoMVC.com -sivustoa, jossa on tarjolla sama Todo-sovellus kirjoitettuna jopa 50:llä eri kirjastoyhdistelmällä. Mukana on myös jQuery-versio vertailun vuoksi.

Karu totuus: MVC ei ole oikotie onneen
Joko kävit kurkkimassa TodoMVC-sivustoa? Hyvä. Ymmärsitkö esimerkkien lähdekoodeista mitään?
MVC-kirjastojen edut eivät välttämättä tule esiin aivan pienissä esimerkeissä. Kestää myös hetken ennen kuin koodin rakenteesta ja jaosta M:n, V:n ja mahdollisen C:n välille pääsee kärryille. Loppujen lopuksi sovelluksesta tulee kuitenkin huomattavasti selkeämpi, testattavampi ja ylläpidettävämpi, mikäli se on järkevästi jaettu erillisiin moduuleihin, joista jokaisella on mahdollisimman yksiselitteinen vastuualue. Tässä asiassa kaikki MV*-kirjastot ovat askel hyvään suuntaan, oli lopullinen valinta mikä hyvänsä.
MVC ei siis JavaScriptin tapauksessa ole oikotie onneen. Edelleen on äärimmäisen tärkeää opetella itse kieli hyvin. Kattava opiskelu alussa maksaa kyllä itsensä takaisin kehitys- ja varsinkin debuggausvaiheessa. Pelkkä copy-paste ei kanna kovin pitkälle.
Jos ja kun löydät omaan käyttöösi sopivan kirjastoyhdistelmän, olisin erittäin kiinnostunut kuulemaan mihin päädyit ja miksi. Esimerkiksi tämän blogin kommenttiosio on hyvä paikka jakaa näkemyksiään! Kysymyksiäkin saa toki esittää, vastailen parhaan kykyni mukaan.
Kirjoittaja työskentelee Tieturissa ohjelmistoasiantuntijana ja keskittyy tätä nykyä lähinnä web- ja Java-teknologioihin. Hänellä on monivuotinen kokemus myös C++-ohjelmoinnista ja mobiilisovelluksista.
Tykkää tästä:
Tykkää Lataa...