*
SK Manvendra
* Getting and running it
* Variables
* “Interpolation” and “““Heredocs”””
* Statements
* Functions and Splats…
* Collections, Iterations and Comprehensions
* Classes
* Example app

*
* CoffeeScript is just compiled down JavaScript.
* We can write JS the way it should be…
* CS is just Syntactical Sugar for JS.
JS = -> JavaScript
CS = -> CoffeeScript

However, CS is more
than Syntactical
Sugar

* If you love JS, you’ll love CS…
* Let’s get to know this…

*

This is becoming
BUZZ WORD these
days…
* CS depends on Node.js environment to get

installed. However CS doesn’t need Node.js to
run on the machine.

* How can I install the Node.js?
* After node is installed, use NPM

Perhaps, SUROOR’s blog
may rescue you here…

to install the CS.

* npm install –g coffee-script
Pay attention to “-g”

*

Node Package
Manager
* On command prompt type coffee. It will drop
you in REPL mode.

* Compile a file.
* Compile a folder.
* Putting output in

Read Eval Print
Loop
coffee –c file.coffee

different folder.
coffee –c src/
coffee –c src/ -o lib/

*
* You can get compile your Coffee files to
JavaScript whenever you change them,
automatically!

coffee –cw src/ -o lib/

* The –w switch makes it happen.
-w switch also watches
for subdirectories

*
* White space considerations.
* Indent your code properly.
* No need to use special cartoon
like characters in the code.

* Freedom from that semicolon.
You’ll need me when
writing multiple lines of
code in a single shot

*

CS is very sensitive
towards it
Why would I need to do
so?
Those are really
obstructive

Though I’m optional in JS
* Use of the var keyword is strictly prohibited.
* CoffeeScript saves us from creating global
variables.

* What if I need to create one/more?

Then how would I
create one?

We can attach them to the global window
object.
But be cautious!!!
* “Hope if it prints the value of #{interest}.”
* A multiline string which may have
#{} can contain any
interpolation inside it.

* var regEx = /d{3}-d{8}/
This RegEx could
be worse.

*

valid CoffeeScript
inside the string
Use ””” quotes
that’ll even
preserve the space

regEx = ///
d{3}d{8}
///
* # I’ll not be visible in compiled JavaScript.
* ###
I think I may put the license and the
information here, and it’ll be visible in the
compiled JavaScript.
###

*
Equal or Identical (equal
and of the same type)?

* == or ===
* != or !==
*?

Not equal or Not
identical?
Existential operator

3 Usage
• Variable declarations check
• Object existence
• Is member a method

?
?.
?()

*
CoffeeScript
* is
* isnt
* not
* and
* or
* true, yes, no
* false, no, off
* @, this
* ::
* of
* in

JavaScript
===
!==
!
&&
||
true
false
this
prototype
in
N/A

Word of caution!!!
isnt and is not are
not same

*
alert “true” if var

* if var then alert “true”
* if var then alert “true” else alert “false”

That’s ternary ?:

* unless var then alert “false” else alert “true”
If the condition is
false

*
* switch var
when “val1”, “val2”

We don’t need the break
keyword anymore

when “val3”
else

*
I’ll be parsed to
(function() {});

* ->
Instant function
Though I’m Anonymous
* do ->
calling
* funcName = (param1, param2) -> alert “Hi”
Functions can take default
* someFunc = (param = val) ->
arguments

However if you need, you
can return explicitly
always

If you really don’t want to return
anything at the end of ->, use
return null or return undefined

* I’ll always return the last statement.

*

Hope if I could
call the ->
without params
* Variable number of arguments to the function.
* someFunc = (etc…) ->
Believe me it’s one
of the best aroma
of CoffeeScript

*
* Arrays in CoffeeScript are no different than in
JavaScript.

* Searching.
* Swapping.
[x, y] = [y, x]
* Ranges.
* Slicing arrays.
* Splicing/Replacing array values.

Maximum size
is 21

*
* Creating objects with literal syntax.
* Creating objects from variables.
* Getting and setting attributes.

*

JSON is breeze here
* for val in array
* for key, val of object
own may
come here

Remember the
hasOwnProperty
method?

* while condition
It’s our old and
only friend here

*

You may append
by and when
You may append
when

until is not bad
option either.
* What these are?

Comprehensions are,
essentially, loops and their
code blocks on the same
line.

*
You’ll start to love
CoffeeScript

* class Employee
* The constructor function
* Inheritance

You know how the
constructor works

Mmm… not exactly
But it’s

But there’s some
hack here

* Class level functions
* Prototype
Don’t dare to forget
me

Also known as noninstance functions

*
* <script type=“text/coffeescript”>
// Some CoffeeScript here
</script>

Before it include a reference to the url
http://jashkenas.github.com/coffeescript/extras/coffee-script.js

*
* How can I write jQuery using CoffeeScript?

Please see the
example app

*
* As a JavaScript replacement.
* Writing jQuery in your projects.
* Writing of JavaScript library easily.
* Writing of jQuery plugins easily too.
* At last: The things you expect from JavaScript
you can do in CoffeeScript very easily.

*
*
* Now it’s your turn to make some for yourself.

*
* O’Reilly The Little Book on CoffeeScript By Alex
MacCaw

* PacktPub CoffeeScript Programming with
jQuery, Rails and Node.js By Michael Erasmus

* The Pragmatic Programmers CoffeeScript
Accelerated JavaScript Development By Trevor
Burnham

* O’Reilly Programming in CoffeeScript By Mark
Bates

*

CoffeeScript - An Introduction

  • 1.
  • 2.
    * Getting andrunning it * Variables * “Interpolation” and “““Heredocs””” * Statements * Functions and Splats… * Collections, Iterations and Comprehensions * Classes * Example app *
  • 3.
    * CoffeeScript isjust compiled down JavaScript. * We can write JS the way it should be… * CS is just Syntactical Sugar for JS. JS = -> JavaScript CS = -> CoffeeScript However, CS is more than Syntactical Sugar * If you love JS, you’ll love CS… * Let’s get to know this… * This is becoming BUZZ WORD these days…
  • 4.
    * CS dependson Node.js environment to get installed. However CS doesn’t need Node.js to run on the machine. * How can I install the Node.js? * After node is installed, use NPM Perhaps, SUROOR’s blog may rescue you here… to install the CS. * npm install –g coffee-script Pay attention to “-g” * Node Package Manager
  • 5.
    * On commandprompt type coffee. It will drop you in REPL mode. * Compile a file. * Compile a folder. * Putting output in Read Eval Print Loop coffee –c file.coffee different folder. coffee –c src/ coffee –c src/ -o lib/ *
  • 6.
    * You canget compile your Coffee files to JavaScript whenever you change them, automatically! coffee –cw src/ -o lib/ * The –w switch makes it happen. -w switch also watches for subdirectories *
  • 7.
    * White spaceconsiderations. * Indent your code properly. * No need to use special cartoon like characters in the code. * Freedom from that semicolon. You’ll need me when writing multiple lines of code in a single shot * CS is very sensitive towards it Why would I need to do so? Those are really obstructive Though I’m optional in JS
  • 8.
    * Use ofthe var keyword is strictly prohibited. * CoffeeScript saves us from creating global variables. * What if I need to create one/more? Then how would I create one? We can attach them to the global window object. But be cautious!!!
  • 9.
    * “Hope ifit prints the value of #{interest}.” * A multiline string which may have #{} can contain any interpolation inside it. * var regEx = /d{3}-d{8}/ This RegEx could be worse. * valid CoffeeScript inside the string Use ””” quotes that’ll even preserve the space regEx = /// d{3}d{8} ///
  • 10.
    * # I’llnot be visible in compiled JavaScript. * ### I think I may put the license and the information here, and it’ll be visible in the compiled JavaScript. ### *
  • 11.
    Equal or Identical(equal and of the same type)? * == or === * != or !== *? Not equal or Not identical? Existential operator 3 Usage • Variable declarations check • Object existence • Is member a method ? ?. ?() *
  • 12.
    CoffeeScript * is * isnt *not * and * or * true, yes, no * false, no, off * @, this * :: * of * in JavaScript === !== ! && || true false this prototype in N/A Word of caution!!! isnt and is not are not same *
  • 13.
    alert “true” ifvar * if var then alert “true” * if var then alert “true” else alert “false” That’s ternary ?: * unless var then alert “false” else alert “true” If the condition is false *
  • 14.
    * switch var when“val1”, “val2” We don’t need the break keyword anymore when “val3” else *
  • 15.
    I’ll be parsedto (function() {}); * -> Instant function Though I’m Anonymous * do -> calling * funcName = (param1, param2) -> alert “Hi” Functions can take default * someFunc = (param = val) -> arguments However if you need, you can return explicitly always If you really don’t want to return anything at the end of ->, use return null or return undefined * I’ll always return the last statement. * Hope if I could call the -> without params
  • 16.
    * Variable numberof arguments to the function. * someFunc = (etc…) -> Believe me it’s one of the best aroma of CoffeeScript *
  • 17.
    * Arrays inCoffeeScript are no different than in JavaScript. * Searching. * Swapping. [x, y] = [y, x] * Ranges. * Slicing arrays. * Splicing/Replacing array values. Maximum size is 21 *
  • 18.
    * Creating objectswith literal syntax. * Creating objects from variables. * Getting and setting attributes. * JSON is breeze here
  • 19.
    * for valin array * for key, val of object own may come here Remember the hasOwnProperty method? * while condition It’s our old and only friend here * You may append by and when You may append when until is not bad option either.
  • 20.
    * What theseare? Comprehensions are, essentially, loops and their code blocks on the same line. *
  • 21.
    You’ll start tolove CoffeeScript * class Employee * The constructor function * Inheritance You know how the constructor works Mmm… not exactly But it’s But there’s some hack here * Class level functions * Prototype Don’t dare to forget me Also known as noninstance functions *
  • 22.
    * <script type=“text/coffeescript”> //Some CoffeeScript here </script> Before it include a reference to the url http://jashkenas.github.com/coffeescript/extras/coffee-script.js *
  • 23.
    * How canI write jQuery using CoffeeScript? Please see the example app *
  • 24.
    * As aJavaScript replacement. * Writing jQuery in your projects. * Writing of JavaScript library easily. * Writing of jQuery plugins easily too. * At last: The things you expect from JavaScript you can do in CoffeeScript very easily. *
  • 25.
  • 26.
    * Now it’syour turn to make some for yourself. *
  • 27.
    * O’Reilly TheLittle Book on CoffeeScript By Alex MacCaw * PacktPub CoffeeScript Programming with jQuery, Rails and Node.js By Michael Erasmus * The Pragmatic Programmers CoffeeScript Accelerated JavaScript Development By Trevor Burnham * O’Reilly Programming in CoffeeScript By Mark Bates *

Editor's Notes

  • #13 name = “MSK”console.log name isnt “RK”console.log name is not “RK”