Develconf coffeescript
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Develconf coffeescript

on

  • 1,578 views

 

Statistics

Views

Total Views
1,578
Views on SlideShare
1,493
Embed Views
85

Actions

Likes
2
Downloads
8
Comments
0

2 Embeds 85

https://twitter.com 83
https://www.rebelmouse.com 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Develconf coffeescript Presentation Transcript

  • 1. NSFW!Prezentace obsahuje sprostá slova
  • 2. • Syntaktický cukr• Čitelný kód• Strukturování kódu odsazením FUJ!
  • 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. 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. SYNTAX
  • 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. PROMĚNNÉ BEZ VARvnejsi = 1funkce = -> vnitrni = 2 vnejsi = 3vnitrni = funkce()
  • 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. POLE A OBJEKTYznalosti = php: uroven: "pokrocily" praxe: 8 html: uroven: "zacatecnik" praxe: 3
  • 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. 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. CYKLYwhile not file.EOF read fileread file until file.EOFradky = readln file until file.EOF
  • 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. 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. 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. 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. 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. TŘÍDY
  • 19. TŘÍDAclass Prednasejici honorar: 0 _wtf: trueja = new Prednasejicialert ja.honorar
  • 20. KONSTRUKTORclass Prednasejici constructor: (jmeno) -> this.jmeno=jmeno honorar: 0ja = new Prednasejici("Martin")alert ja.jmeno
  • 21. @PROPERTYclass Prednasejici constructor: (jmeno) -> @jmeno=jmeno honorar: 0ja = new Prednasejici("Martin")alert ja.jmeno
  • 22. @PROPERTY, VOL. 2class Prednasejici constructor: (@jmeno) -> honorar: 0ja = new Prednasejici("Martin")alert ja.jmeno
  • 23. DĚDIČNOSTclass DrzyPrednasejici extends Prednasejici honorar: "Jidlo"ja = new DrzyPrednasejici("Martin")alert ja.honorar
  • 24. PŘÍSTUP K PROTOTYPU ::Array::map = -> čňčňčň
  • 25. PRO A PROTI
  • 26. PROBLÉMYVýznamotvorná mezeraprefix = "prvek_"id1 = prefix + 12 /// == prvek_12id2 = prefix +12 /// TypeError id2 = prefix(+12)
  • 27. PROBLÉMYAsociativita operátorůconsole.log (fn 3, fn 4) console.log (fn (3, fn 4))console.log fn (3), fn (4)
  • 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. „A TO JE VŠECHNO?“ VOL. 1Interaktivní konzole na coffeescript.orgDialekty – Iced CoffeeScript (await, defer)CoffeeScript Redux – „source maps“Pluginy pro editoryKnihovnytranspilery
  • 30. „A TO JE VŠECHNO?“ VOL. 2Čistý kódSprávné JS konstrukceRobustní JS kód (vč. JSLint)Čitelný kód
  • 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. MATERIÁL KE STUDIU: UTFG!