EN
Josip_biscan_original

CoffeeScript - kako pisati brži i bolji JavaScript kod

piše: Josip Bišćan, 30.05.2011 10:00 u Web development, Javascript, HTML5, Coffeescript

Kad su se prvi put pojavili jezici Haml i Sass kao ispomoć u pisanju predložaka i stilova za Rails, bio sam skeptičan učenju novih “jezika”. Moj stav je bio otprilike ovakav - ne pišem ja redundantan kod, HTML je lako čitljiv, CSS sasvim pristojno izgleda i sve skupa ja dovoljno brzo radim i na stari način.

Ipak, s obzirom na to da se bavimo razvojem web-aplikacija i volimo pratiti nove tehnologije, odlučio sam isprobati Haml i Sass na većem projektu te sam već nakon par sati shvatio da su mi predrasude bile potpuno krive.

Haml, Sass?

Haml i Sass su u programski jezici koji se prevode u HTML i CSS. Prednost je njihova korištenja (naspram izravnog pisanja HTML-a i CSS-a) što imaju dosta napredniju sintaksu, te daju dodatne mogućnosti (kao recimo varijable u slučaju Sass-a). 

Lakoća, brzina i jednostavnost pisanja vrlo su brzo postali navika pa sam Haml i Sass počeo koristiti na svim projektima koji rade nešto s HTML ili CSS-om, a gdje Railsa nema ni u tragovima - u razvoju mobilnih aplikacija.

Otkud sad CoffeeScript?

Prije nekih 2 mjeseca krenuli smo u novi i veći projekt za naše američke klijente. Riječ je o desktop aplikaciji koja će u potpunosti biti bazirana na HTML5 tehnologijama, što u konačnici znači - jako puno Javascript koda.

Dok smo se spremali u izradu prototipa, Car je naišao na Coffeescript i javio mi da ga pogledam jer je to “nešto za JavaScript slično kao Haml za HTML” i navodno je jako dobro.

S obzirom na to da sam prošao valjda sve lijepe i ružne strane JavaScripta, a ove potonje su vrlo iritantne, ideja mi je sjela na prvu. Zaputio sam se na službenu stranicu projekta gdje se uz kratko objašnjenje o čemu se radi nalazi i poruka da je zlatno pravilo CoffeeScripta - "It's just JavaScript".

Nakon toga slijedi nekoliko primjera koji su pravi mamac za ljubitelje rubyjeve sintakse. Kako i ja dolazim iz svijeta rubyja i Railsa, ponuđeni syntax sugar djelovao je vrlo primamljivo:

  • inline if naredbe
  • jednostavno pisanje JavaScript-objekata
  • pojednostavljeno definiranje funkcija
  • indentacija ima značenje
  • izbačene nepotrebne vitičaste zagrade
  • olakšanja iteracija arrayeva
  • egzistencijalni operator (if some_variable?)

Zadnji tragovi sumnje nestali su kad sam vidio kako je jednostavno definirati razred te njegove privatne i javne metode i varijable bez muke oko prototipova, immediately-invoked funkcija, vlastitih svojstava objekta i svega ostalog što uz to ide.

Obično bi se u ovom trenutku u priču upleo stanoviti g. Murphy sa svojim zakonima i potrudio se da se pojavi neko "ali" koje će me otjerati od CoffeeScripta, no izgleda da je isti negdje zalutao jer se "ali" ni nakon skoro mjesec dana nije pojavilo.

Druga strana medalje?

Istini za volju, neke stvari bi mogle biti bolje. Krenete li prevoditi facebookAPI.coffee, dobit ćete facebookAPI.js i to je ok. No, želite li spojiti facebookAPI.coffee, twitterAPI.coffee i google.coffee, dobit ćete concatenation.js i ja još uvijek nisam našao način da to preimenujem u nešto drugo. Izmjena: od inačice 1.1.0 prilikom spajanja obavezno je navesti naziv detoteke u koju se spaja tako da ova zamjerka više ne stoji.

Druga nezgodna stvar je traženje pogrešaka. Iako su nakon kratkog privikavanja sintaksne pogreške u CoffeeScriptu vrlo rijetke, njihovo pojavljivanje lako se istraži na temelju poruke o pogrešci prilikom prevođenja.

No, traženje logičkih pogrešaka je malo zapetljanije. Prvo tijekom izvođenja JavaScripta morate uhvatiti gdje se dogodila pogreška, a onda otkriti gdje se to nalazi u CoffeeScriptu. No, s obzirom na to da ionako moramo znati JavaScript, nakon malo privikavanja, ni to nije tolika gnjavaža.

Što se čeka?

Uz to što sam se ja zaljubio na prvi pogled, izgleda da slično razmišlja i ekipa koja stoji iza Railsa pa će CoffeeScript biti defaultni jezik za client-side skriptiranje od Railsa 3.1.

Ako se nekom to ne sviđa, neka pogleda moramo li koristiti CoffeeScript u Railsu. A sad, pravac http://jashkenas.github.com/coffee-script/ i isprobajte ga!

 

RSS

Pratite nove članke na Infinumovom blogu putem RSS feeda.

Rss

Kategorije

Arhiva