Develconf coffeescript

1,321
-1

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,321
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
10
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Develconf coffeescript

  1. 1. NSFW!Prezentace obsahuje sprostá slova
  2. 2. • Syntaktický cukr• Čitelný kód• Strukturování kódu odsazením FUJ!
  3. 3. Pochybuji, ţe se CoffeeScript ujme. Vlastněnepochybuji, jsem si zcela jist, neujme se, protoţeekosystém. Široká audience nikdy CoffeeScriptnepřijme, protoţe nejsou příklady, nejsoueditory, nejsou code syntax highlightery, nejsoudebuggery, nejsou přátelé na IM, prostě CoffeeScriptje v ekosystému RIA aplikací vetřelec. Syntax prorychlejší a přehlednější psaní js není to podstatné, ačjsem si sám dlouho myslel opak, co rozhoduje. Jesmutné, kdyţ někdo investuje svůj čas doreimplementace ko­la…DANIEL STEIGERWALD, 5.12.2010
  4. 4. Coffeescript je především krásný. Nejde jen o toušetřit si pár znaků při psaní kódu, ale hlavně ulevitočím při jeho čtení. Coffeescript je chytrý. Je tuelegantní a strohá definice třídy, skrze klíčovéslovo class. Ţe všechno je v Coffeescriptu výraz.A ţe uţ nikdy nemusím přemýšlet, zdali iterovatpomocí for in, nebo $.each. A nikdy uţ volat bind jenproto, ţe chci uţít closure a zachovat this.Pouţitelné nástroje existují, a kaţdý den se rodínové. (…)DANIEL STEIGERWALD, 19.8.2011
  5. 5. SYNTAX
  6. 6. FUNKCE ->dvojmoc = (x) -> x * xsoucet = (xs) -> r = 0 (r = r + x) for x in xs rconsole.log dvojmoc 5console.log soucet [1, 3, 3, 7]
  7. 7. PROMĚNNÉ BEZ VARvnejsi = 1funkce = -> vnitrni = 2 vnejsi = 3vnitrni = funkce()
  8. 8. ŘETĚZCE"Třikrát pět je #{3 * 5}" //vyčíslíTřikrát pět je #{3 * 5} //nevyčíslíhtml = <strong> CoffeeScript! </strong>
  9. 9. POLE A OBJEKTYznalosti = php: uroven: "pokrocily" praxe: 8 html: uroven: "zacatecnik" praxe: 3
  10. 10. PODMÍNKY – IF, UNLESSif zima then zatop()if zima zatop()zatop() if zimazatop() unless teplokotel = if teplo then "off" else "on"optimum = 18 < teplota < 23
  11. 11. PODMÍNĚNÉ PŘIŘAZENÍoptions or= defaults//JS: options || (options = defaults);unless odpoved? then odpoved = 42//JS:if (typeof odpoved === "undefined" ||odpoved === null) { odpoved = 42;}
  12. 12. CYKLYwhile not file.EOF read fileread file until file.EOFradky = readln file until file.EOF
  13. 13. VŠE JE VÝRAZ!radky = readln file until file.EOFkotel = if teplo then "off" else "on"dvojmoc = (x) -> x*xdvojmoci = (dvojmoc(x) for x in [1..5])
  14. 14. SMYČKA FORdvojmoci = (dvojmoc(x) for x in [1..5])for jmeno in jmena alert jmenoalert property for property of windowalert (property for property of window)for key, value of databasefor all key, value of database
  15. 15. ROZSAHY [..][1..5]  [1, 2, 3, 4, 5][1...5]  [1, 2, 3, 4][5..1]  [5, 4, 3, 2, 1][1..100]  iterační funkce
  16. 16. VÝPUSTKA (SPLAT) …fn = (a, b...) -> čňčňčňčňfn 10, 20, 30, 40 // a=10, b=[20, 30, 40]fn = (a, b..., c) -> čňčňčňčňfn 10, 20, 30, 40 // a=10, b=[20, 30], c=40par = [10,20,30,40]fn par // a=[10,20,30,40]fn par... // a=10, b=[20, 30], c=40
  17. 17. DESTRUKTUROVANÉ PŘIŘAZENÍmiry = -> [90, 60, 90][prsa, pas, boky] = miry()[a, b] = [b, a]pole = [3,1,4,1,5][prvni, telo..., posledni] = pole
  18. 18. TŘÍDY
  19. 19. TŘÍDAclass Prednasejici honorar: 0 _wtf: trueja = new Prednasejicialert ja.honorar
  20. 20. KONSTRUKTORclass Prednasejici constructor: (jmeno) -> this.jmeno=jmeno honorar: 0ja = new Prednasejici("Martin")alert ja.jmeno
  21. 21. @PROPERTYclass Prednasejici constructor: (jmeno) -> @jmeno=jmeno honorar: 0ja = new Prednasejici("Martin")alert ja.jmeno
  22. 22. @PROPERTY, VOL. 2class Prednasejici constructor: (@jmeno) -> honorar: 0ja = new Prednasejici("Martin")alert ja.jmeno
  23. 23. DĚDIČNOSTclass DrzyPrednasejici extends Prednasejici honorar: "Jidlo"ja = new DrzyPrednasejici("Martin")alert ja.honorar
  24. 24. PŘÍSTUP K PROTOTYPU ::Array::map = -> čňčňčň
  25. 25. PRO A PROTI
  26. 26. PROBLÉMYVýznamotvorná mezeraprefix = "prvek_"id1 = prefix + 12 /// == prvek_12id2 = prefix +12 /// TypeError id2 = prefix(+12)
  27. 27. PROBLÉMYAsociativita operátorůconsole.log (fn 3, fn 4) console.log (fn (3, fn 4))console.log fn (3), fn (4)
  28. 28. PROBLÉMYPorovnání je vždy typovévar a = 0, b = , c = 0;a == b; // truea == c; // trueb == c; // falseCoffeeScript překládá == na ===
  29. 29. „A TO JE VŠECHNO?“ VOL. 1Interaktivní konzole na coffeescript.orgDialekty – Iced CoffeeScript (await, defer)CoffeeScript Redux – „source maps“Pluginy pro editoryKnihovnytranspilery
  30. 30. „A TO JE VŠECHNO?“ VOL. 2Čistý kódSprávné JS konstrukceRobustní JS kód (vč. JSLint)Čitelný kód
  31. 31. „A TO JE VŠECHNO?“ BONUS„Literate CoffeeScript“ (od verze 1.5)Zápis kódu do dokumentu v Markdown – kód jesoučást svojí dokumentace
  32. 32. MATERIÁL KE STUDIU: UTFG!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×