IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

1. diel - Úvod do CoffeeScriptu

Strácate sa v nadmernom množstve zátvoriek? Robia sa vám mihanie pred očami z nekonečného function () {function (function () {}) {}}? Máte nočné mory z OOP v JavaScripte? Práve pre vás je CoffeeScript!

Čo je CoffeeScript?

CoffeeScript je programovací jazyk, ktorý sa kompiluje do JavaScriptu. Inými slovami, čo ide napísať v JS ide napísať v CoffeeScriptu. Kód v ňom však obsahuje omnoho menej riadkov, je prehľadnejšie a je radosť ho písať. Jazyk pridáva totiž tzv. Syntaktický cukor (cukor, káva ... :) ), Tj. Spríjemnenie kódu programátorovi. Ak ste oboznámení s Ruby, Python, Haskell alebo podobným jazykom, bude vám CoffeeScript blízky.

Oficiálna stránka obsahuje skvelú dokumentáciu a dokonca si môžete pod záložkou "Try CoffeeScript" pilovať zručnosti priamo v prehliadači. Ak nehodláte písať zložitejšie kód, bude vám tento spôsob stačiť a nasledujúcu časť o inštalácii môžete pokojne preskočiť a vrhnúť sa na písanie kódu.

Inštalácia a základné príkazy

Choďte na stránku http://nodejs.org/ a kliknite na "Install". Po stiahnutí a nainštalovaní otvorte node.js command prompt a napíšte

npm install –g coffee-script

Môžete sa presvedčiť, či je CoffeeScript nainštalovaný príkazom

coffee –v

Ak ste správne nainštalovali CoffeeScript, tento príkaz vypíše túto verziu vo vašom počítači. Pre samotnú kompiláciu použite príkaz

coffee -o javascripts\ -c coffeescripts\

Prvé slovo je názov príkazu, -o je skratka pre "output", čiže výstup. Za ňou budeme písať zložku, kde chceme .js stránky. Namiesto JavaScripts \ teda napíšete napr. C: \ mujProjektNaKofeinu \ skripty \. Voľba -c znamená "compile" a píše sa za ňou názov súboru s príponou .coffee, alebo celá zložka s týmito súbormi. Po vykonaní príkazu sa .coffee súbor (y) skompiluje do .js súboru s rovnakým menom.

Možno vás napadá, že by bola strašná otrava stále dookola spúšťať tento príkaz, keď chcete postupovať krok po kroku. Našťastie máme voľbu -w, čiže "watch", ktorá sleduje zmeny v .coffee súboru a príkaz beží a kompiluje, kým ho nezastavíte. Príkaz potom vyzerá takto:

coffee –w –o javascripts\ -c coffeescripts\

Začíname

Premenné nepotrebujú k deklarácii slovíčko var, stačí len napísať názov premennej a priradiť hodnotu.

cislo = 5
kafe = "cerny turek bez cukru"
jeRok1453 = false

Deklarácia premennej je vo výslednom .js súboru posunutá na začiatok bloku. Vidíme teda, ako bude JavaScript "čítať" náš kód a nemusíme sa zaťažovať hoistingem. Tieto 3 riadky sa teda skompiluje do:

var cislo, kafe, jeRok1453 ;
cislo = 5;
kafe = "cerny turek bez cukru";
jeRok1453 = false;

Ako môžete vidieť na tomto príklade, v CoffeeScriptu nepotrebujete bodkočiarkami. Sú nutné len v prípade viac príkazov na jednom riadku, teda

cislo=5;kafe="cerny turek bez cukru";jeRok1453 = false

je taktiež validný CoffeeScript, ktorý sa zostavuje do úplne rovnakého JS kódu, ako kúsok vyššie. Tu môžeme vidieť ďalšiu dôležitú vlastnosť CoffeeScriptu - veľa vecí sa môže napísať rovnako, ako v JS. "Môže" však neznamená "malo by" a "veľa" nie je "všetko", takže budeme dodržiavať zápis prvého príkladu.

Základné operácie s premennými robia presne to, čo by ste od nich čakali v JS, takže:

x = 6 + 5
y = "6" + "5"
z = "6" + 5

#x = 11
#y = "65"
#z = "65"

Ako vidíte, komentáre sa v CoffeeScriptu píšu krížikom (hashom, mriežkou, podľa toho ako to nazývate), avšak pozor! Tento komentár sa neobjaví vo výslednom .js súboru, je to teda komentár čisto pre CoffeeScript súbor. Ak chcete, aby sa komentár objavil aj po kompiláciu, musíte ho napísať takto:

### Toto je komentář, který se nevymaže ###
#Toto nebude v .js

Výsledný JavaScript:

/* Toto je komentář, který se nevymaže */

Vrátime sa späť k premenným a operáciám. Tiež vás niekedy pekne štve, keď skladáte vetu z premenných obsahujúcich textový reťazec a musíte to písať nasledujúcim spôsobom:

var veta = "A bylo nebylo, "+ kralovstvi + " za " + pocetHor + " horami, " + pocetRek + " rekami, ktere " + problem + " " + jmenoDraka;

Po prvé je to dosť neprehľadné. Po druhé, keď chcete napr. Pridať medzeru, musíte napísať minimálne 5 znakov. A po tretie, či budete mať "+" aj v samotných reťazcoch, začne vás bolieť hlava. Našťastie môžeme v CoffeeScriptu použiť interpoláciu reťazcov, ktorú môžete poznať z iných jazykov ako napr. PHP. Môžeme teda vyššie uvedený príklad zapísať takto:

veta = "A bylo nebylo, #{kralovstvi} za #{pocetHor} horami, #{pocetRek} rekami, ktere #{problem} #{jmenoDraka}"

Rovnako ako v PHP, aj v CoffeeScriptu apostrofy interpretujú text presne tak, ako im je zadaný, interpolácia ide použiť len v úvodzovkách.

kava = "Jacobs Krönung"
alert("#{kava}")
# Jacobs Krönung

alert '#{kava}'
# #{kava}

Moment ...! Kam sa podeli zátvorky? Áno, i je CoffeeScriptu ich môžeme pri volaní funkcie s parametrami jednoducho vynechať. Keďže by pri volaní funkcií vo funkciách vznikal pekný chaos, odporúčaný postup je vynechávať okrúhle zátvorky iba pri funkcii, ktorá je najviac "vonku". Volanie funkcie bez parametrov musí buď mať zátvorky, alebo použiť kľúčové slovo do.

Príklad:

uskladnit uprazit(sesbirat(zrna))
funkce      # ERROR
funkce()    # tak je to správně
do funkce   # tak je to taky správně

Poľa

Pole môžeme deklarovať ako v JS nasledovne:

pole = [1, 5, 6, 3]

Alebo bez čiarok s prvkami pod sebou:

pole = [
 1
 5
 6
 3
]

Dávajte si veľký pozor na odsadenie. Je jedno, či tabulátorom, jednou medzerou alebo desiatich. Keď bude prvý prvok v úrovni pod názvom premennej, CoffeeScript si nebude vedieť rady. Toto je ďalší z významných vlastností CoffeeScriptu, pretože podľa odsadenie sa určuje úroveň vnorenia. Žiadne zložené zátvorky, žiadne end, iba odsadenie. Ďalšie prvky v poli môžete odsadiť ako chcete, ale esteticky je najlepšie dávať je pod prvý prvok.

Pole ide zapísať samozrejme aj kombináciou predchádzajúcich postupov:

matice = [
 1, 2, 3
 4, 5, 6
 7, 8, 9
]

CoffeeScript obsahuje aj tzv. Tic (n-tice), ktoré vám môžu zjednodušiť prácu s poľami a dokonca s ich pomocou je možné pole i vytvárať.

# pozor, nemůžete přidat další a musíte mít n-tici na stejném řádku jako název proměnné
ntice = [1..100] # vytvoří pole
kavy = [
 "Latte"
 "Cappuccino"
 "Espresso"
 "Moccaccino"
 "Frappe"
 "Irská"
]

vybraneKavy = kavy[2..4] # vybraneKavy == ["Espresso", "Moccaccino", "Frappe"]

Výsledok v JS:

var kavy, ntice1, vybraneKavy;

ntice = (function() {
  _results = [];
  for (_i = 1; _i <= 100; _i++){ _results.push(_i); }
  return _results;
}).apply(this);

kavy = ["Latte", "Cappuccino", "Espresso", "Moccaccino", "Frappe", "Irská"];
vybraneKavy = kavy.slice(2, 5);

Objekty

Vytvorme si jednoduchý objekt, napríklad kaviareň:

kavarna = {
 jmeno: "Kofeinová pumpa",
 rokZalozeni: 2001,
 freeWifi: yes
}

Teraz trochu odbehnem od témy. Asi si hovoríte, že je fajn mať WiFi zadarmo, ale nemá tam byť "true" namiesto "yes"? CoffeeScript používa 6 slov pre označenie bool hodnoty. Pravdu môžeme vyjadriť slovíčkami true, yes, on, nepravdu pomocou false, no, off. Tieto hodnoty sa skompiluje do starého dobrého true/false, takže si vyberte, čo sa vám páči.

Späť k objektom - čiarky môžeme podobne ako u polí vynechať:

kavarna = {
 jmeno: "Kofeinová pumpa"
 rokZalozeni: 2001
 freeWifi: yes
}

A dokonca môžeme vynechať aj zložené zátvorky:

kavarna =
 jmeno: "Kofeinová pumpa"
 rokZalozeni: 2001
 freeWifi: yes

Znovu pozor na odsadenie. Pridáme nápojový lístok:

kavarna =
 jmeno: "Kofeinová pumpa"
 rokZalozeni: 2001
 freeWifi: yes
 napojovyListek:
  kavy: [
   "Cappuccino"
   "Moccaccino"
   "Espresso"
  ]
  nealko: [
   "Sprite"
   "Pomerančový džus"
   "Voda z Marsu"
  ]

JavaScript:

var kavarna;

kavarna = {
  jmeno: "Kofeinová pumpa",
  rokZalozeni: 2001,
  freeWifi: true,
  napojovyListek: {
    kavy: ["Cappuccino", "Moccaccino", "Espresso"],
    nealko: ["Sprite", "Pomerančový džus", "Voda z Marsu"]
  }
};

To by bolo na úvod všetko, nabudúce sa pozrieme na vetvenie a cykly.


 

Všetky články v sekcii
CoffeeScript
Preskočiť článok
(neodporúčame)
Vetvenia a cykly v CoffeeScriptu
Článok pre vás napísal Yahkem
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
...
Aktivity