Your SlideShare is downloading. ×
CoffeeScript
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

CoffeeScript

1,334
views

Published on

Published in: Technology

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

  • Be the first to like this

No Downloads
Views
Total Views
1,334
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. CoffeeScript Petr Pokorný
  • 2. ObsahCo to je?Proč to používat?Jak to vypadá?Jak to rozchodit?
  • 3. Co to je?
  • 4. Co to je?CoffeeScript is a little language that compilesinto JavaScript.
  • 5. Co to je?CoffeeScript is a little language that compilesinto JavaScript.The code compiles one-to-one into theequivalent JS, and there is no interpretationat runtime.
  • 6. JavaScript je v jádru docela dobrý jazyk, ale…
  • 7. JavaScript je v jádru docela dobrý jazyk, ale…“ JavaScript had to look like Java only less so, be Java’s dumb kid brother or boy-hostage sidekick.
  • 8. JavaScript je v jádru docela dobrý jazyk, ale…“ JavaScript had to look like Java only less so, be Java’s dumb kid brother or boy-hostage sidekick. Plus, I had to be done in ten days or something worse than JavaScript would have happened. ” — Brendan Eich
  • 9. Proč to používat?
  • 10. Proč to používat?Rychlejší vývoj
  • 11. Proč to používat?Rychlejší vývojMéně bugů
  • 12. Proč to používat?Rychlejší vývojMéně bugůLepší čitelnost
  • 13. Jak to vypadá?JavaScript CoffeeScript
  • 14. Functionsvar cube, square;square = function(x) { return x * x; square = (x) -> x * x};cube = function(x) { cube = (x) -> square(x) * x return square(x) * x;}; JavaScript CoffeeScript
  • 15. Objectsvar kids = { kids = brother: { brother: name: "Max", name: "Max" age: 11 age: 11 }, sister: sister: { name: "Ida" name: "Ida", age: 9 age: 9 }}; JavaScript CoffeeScript
  • 16. If, Else, Conditional Assignmentvar date, mood;if (singing) { mood = greatlyImproved if singing mood = greatlyImproved;}if (happy && knowsIt) { if happy and knowsIt clapsHands(); clapsHands() chaChaCha(); chaChaCha()} else { else showIt(); showIt()}date = friday ? sue : jill; date = if friday then sue else jill JavaScript CoffeeScript
  • 17. OOPvar Animal, Horse, Snake, sam, tom;var __hasProp = Object.prototype.hasOwnProperty, __extends = class Animalfunction(child, parent) { constructor: (@name) -> for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; }ctor.prototype = parent.prototype; move: (meters) ->child.prototype = new ctor; child.__super__ = parent.prototype; alert @name +" moved "+ meters +"m."return child;};Animal = (function() { function Animal(name) { this.name = name; } Animal.prototype.move = function(meters) { class Snake extends Animal return alert(this.name + " moved " + meters + "m."); }; move: ->return Animal;})();Snake = (function() { __extends(Snake, Animal); function alert "Slithering..."Snake() { Snake.__super__.constructor.apply(this, arguments); super 5} Snake.prototype.move = function() { alert("Slithering...");return Snake.__super__.move.call(this, 5); }; returnSnake;})(); class Horse extends AnimalHorse = (function() { __extends(Horse, Animal); functionHorse() { move: -> } Horse.__super__.constructor.apply(this, arguments); alert "Galloping..."Horse.prototype.move = function() { super 45 alert("Galloping..."); returnHorse.__super__.move.call(this, 45);}; return Horse;})(); sam = new Snake "Sammy the Python"sam = new Snake("Sammy the Python");tom = new Horse("Tommy the Palomino"); tom = new Horse "Tommy the Palomino" JavaScript CoffeeScript
  • 18. Na co jste zvyklí z Pythonu
  • 19. Loops# Eat lunch.for food in [toast, cheese, wine]: eat(food)# Eat lunch.eat food for food in [toast, cheese, wine]
  • 20. Loops# Eat lunch.for food in [toast, cheese, wine]: eat(food)# Eat lunch.eat food for food in [toast, cheese, wine]var food, _i, _len, _ref;_ref = [toast, cheese, wine];for (_i = 0, _len = _ref.length; _i < _len; _i++) { food = _ref[_i]; eat(food);}
  • 21. Loopsfor key in {‘foo’: ‘bar’}for key, value in {‘foo’: ‘bar’}.items()for key of {foo: ‘bar’}for key, value of {foo: ‘bar’}
  • 22. Rangesfor i in range(1, 10)for i in range(10, 1, -1)for i in range(1, 10, 2)for i in [1..9] # nebo [1...10]for i in [10..2]for i in [1..9] by 2
  • 23. Comprehensionsshort_names = [name for name in list if len(name) < 5]shortNames = (name for name in list when name.length < 5)
  • 24. Slicingmy_list[3:6]my_list[3:]my_list[:-3]myList[3..5]myList[3..]myList[...-3]
  • 25. Slicingmy_list[3:6] = [1, 2, 3]my_list[3:]my_list[:-3]myList[3..5] = [1, 2, 3]myList[3..]myList[...-3]
  • 26. Splats(a.k.a. argument list unpacking)def foo(bar, *args): passfoo = (bar, args...) ->
  • 27. Chained Comparisons cholesterol = 127 healthy = 200 > cholesterol > 60
  • 28. more...
  • 29. The Existential Operator alert "I knew it!" if elvis?if (typeof elvis !== "undefined" && elvis !== null) { alert("I knew it!");}
  • 30. Destructuring AssignmenttheBait = 1000theSwitch = 0[theBait, theSwitch] = [theSwitch, theBait]weatherReport = (location) -> # Make an Ajax request to fetch the weather... [location, 72, "Mostly Sunny"][city, temp, forecast] = weatherReport "Berkeley, CA"
  • 31. Fat arrow – binding thisAccount = (customer, cart) -> @customer = customer @cart = cart $(.shopping_cart).bind click, (event) => @customer.purchase @cart
  • 32. String Interpolationauthor = "Wittgenstein"quote = "A picture is a fact. -- #{author}"sentence = "#{ 22 / 7 } is a decent approximation of π"
  • 33. Jak to rozchodit?
  • 34. The CoffeeScript compiler isitself written in CoffeeScript.
  • 35. nodejs.org
  • 36. Node Package Manager$ curl http://npmjs.org/install.sh | sh$ npm install -g coffee-script
  • 37. $ coffee --watch --compile *.coffee19:45:31 - compiled myscript.coffee19:47:22 - compiled myscript.coffeeIn myscript.coffee, too many ) on line 3919:47:40 - compiled myscript.coffee19:48:10 - compiled myscript.coffee19:48:47 - compiled myscript.coffeeIn myscript.coffee, Parse error on line 3: Unexpected INDENT19:49:23 - compiled myscript.coffee
  • 38. <script src="/path/to/coffee-script.js"></script><script type="text/coffeescript"> $(document).ready -> alert "Your DOM is ready."</script>
  • 39. OdkazyCoffeeScript homepagehttp://jashkenas.github.com/coffee-script/node.jshttp://nodejs.org/npmhttp://npmjs.org/Introduction to CoffeeScripthttp://screencasts.org/episodes/introduction-to-coffeescript/Js2Coffee – The JavaScript to CoffeeScript compiler.http://ricostacruz.com/js2coffee/