CoffeeScript
Vojtěch Grec
▷ It's just JavaScript
▷ Syntaktický cukřík
o Přehlednější a jednodušší zápis
o Usnadnění některých úloh
▷ Kompiluje se 1:1 do JavaScriptu ("Transpiler")
o *.coffee → *.js
▷ Node.js (npm install -g coffee-script)
Co to je?
▷ Jeremy Ashkenas
o Backbone.js, Underscore.js
▷ První commit 13. 12. 2009
▷ v0.5 (21. 2. 2010): kompilátor napsaný v
CoffeeScriptu (místo Ruby)
▷ Od RoR 3.1 (31. 8. 2011) součástí jeho "asset
pipeline"
▷ Inspiroval Brendana Eicha pro ES6
Historie a vývoj
▷ Všechno je výraz
▷ Minimum závorek
▷ Postfixové verze řídicích struktur (Perl)
▷ "Slovní" operátory
▷ Existenční operátor (Ruby)
▷ Třídy
Syntax
▷ Lexical Scoping & Variable Safety
▷ Implicitní return
▷ Pole a objekty
o Slicing, Splicing
▷ Smyčky a Comprehensions
▷ Funkce a generátory
o Splats (...), výchozí hodnoty argumentů
▷ Destructuring Assignments
▷ Chained Comparisons (Python)
▷ Řetězce
o Šablony, bloky
Syntax – vlastnosti
Syntax – ukázka
# Assignment:
number = 42
opposite = true
# Conditions:
number = -42 if opposite
# Functions:
square = (x) -> x * x
# Arrays:
list = [1, 2, 3, 4, 5]
# Objects:
math =
root: Math.sqrt
square: square
cube: (x) -> x * square x
# Splats:
race = (winner, runners...) ->
print winner, runners
# Existence:
alert "I knew it!" if elvis?
# Array comprehensions:
cubes = (math.cube num for num
in list)
(Zdroj: http://coffeescript.org/ – více příkladů tamtéž)
▷ Source maps
▷ <script type="text/coffeescript" />
▷ Literate CoffeeScript
o Markdown + CoffeeScript (*.litcoffee)
o Docco (dokumentační tool)
▷ Cake ("CoffeeScript Make")
Další vlastnosti
▷ Kompilace
o Cakefile/Gulp/Grunt/Maven
o coffee -w
▷ Projekty/firmy
o Dropbox (všechen JS na frontendu)
o GitHub (všechen JS)
 Atom editor
 Hubot
Použití v praxi
▷ TypeScript (Microsoft)
o Především "type"
▷ ECMAScript 6
o Krok správným směrem
o Coffee je ale pohodlnější
▷ Dart (Google)
o Podle Dana Steigerwalda mrtvý
Konkurence
Díky za pozornost!
Otázky?
Vojta Grec
vojtech.grec@keyup.eu

CoffeeScript

  • 1.
  • 2.
    ▷ It's justJavaScript ▷ Syntaktický cukřík o Přehlednější a jednodušší zápis o Usnadnění některých úloh ▷ Kompiluje se 1:1 do JavaScriptu ("Transpiler") o *.coffee → *.js ▷ Node.js (npm install -g coffee-script) Co to je?
  • 3.
    ▷ Jeremy Ashkenas oBackbone.js, Underscore.js ▷ První commit 13. 12. 2009 ▷ v0.5 (21. 2. 2010): kompilátor napsaný v CoffeeScriptu (místo Ruby) ▷ Od RoR 3.1 (31. 8. 2011) součástí jeho "asset pipeline" ▷ Inspiroval Brendana Eicha pro ES6 Historie a vývoj
  • 4.
    ▷ Všechno jevýraz ▷ Minimum závorek ▷ Postfixové verze řídicích struktur (Perl) ▷ "Slovní" operátory ▷ Existenční operátor (Ruby) ▷ Třídy Syntax
  • 5.
    ▷ Lexical Scoping& Variable Safety ▷ Implicitní return ▷ Pole a objekty o Slicing, Splicing ▷ Smyčky a Comprehensions ▷ Funkce a generátory o Splats (...), výchozí hodnoty argumentů ▷ Destructuring Assignments ▷ Chained Comparisons (Python) ▷ Řetězce o Šablony, bloky Syntax – vlastnosti
  • 6.
    Syntax – ukázka #Assignment: number = 42 opposite = true # Conditions: number = -42 if opposite # Functions: square = (x) -> x * x # Arrays: list = [1, 2, 3, 4, 5] # Objects: math = root: Math.sqrt square: square cube: (x) -> x * square x # Splats: race = (winner, runners...) -> print winner, runners # Existence: alert "I knew it!" if elvis? # Array comprehensions: cubes = (math.cube num for num in list) (Zdroj: http://coffeescript.org/ – více příkladů tamtéž)
  • 7.
    ▷ Source maps ▷<script type="text/coffeescript" /> ▷ Literate CoffeeScript o Markdown + CoffeeScript (*.litcoffee) o Docco (dokumentační tool) ▷ Cake ("CoffeeScript Make") Další vlastnosti
  • 8.
    ▷ Kompilace o Cakefile/Gulp/Grunt/Maven ocoffee -w ▷ Projekty/firmy o Dropbox (všechen JS na frontendu) o GitHub (všechen JS)  Atom editor  Hubot Použití v praxi
  • 9.
    ▷ TypeScript (Microsoft) oPředevším "type" ▷ ECMAScript 6 o Krok správným směrem o Coffee je ale pohodlnější ▷ Dart (Google) o Podle Dana Steigerwalda mrtvý Konkurence
  • 10.
    Díky za pozornost! Otázky? VojtaGrec vojtech.grec@keyup.eu