coffeescript - an introduction

27
SK Manvendra * CoffeeScript An Introduction

Upload: manvendra-singh

Post on 10-May-2015

321 views

Category:

Education


2 download

DESCRIPTION

An interesting presentation for learning the language from very basic. It provides very good insight to the language. JavaScript is the only prerequisite. It comes with a lot of examples that helps to learn the basics very quickly. Here is the SkyDrive download link http://sdrv.ms/16T7whf

TRANSCRIPT

Page 1: CoffeeScript - An Introduction

SK Manvendra

*CoffeeScriptAn Introduction

Page 2: CoffeeScript - An Introduction

*Aroma of Coffee…

*Getting and running it

*Variables

*“Interpolation” and “““Heredocs”””

*Statements

*Functions and Splats…

*Collections, Iterations and Comprehensions

*Classes

*Example app

Page 3: CoffeeScript - An Introduction

*What is this all about???

*CoffeeScript is just compiled down JavaScript.

*We can write JS the way it should be…

*CS is just Syntactical Sugar for JS.

*If you love JS, you’ll love CS…

*Let’s get to know this…

This is becoming BUZZ WORD these days…

However, CS is more than

Syntactical Sugar

CS = -> CoffeeScript

JS = -> JavaScript

Page 4: CoffeeScript - An Introduction

*Where can I find this?

*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

to install the CS.

*npm install –g coffee-script

Perhaps, SUROOR’s blog may rescue you

here…

Node Package Manager

Pay attention to “-g”

Page 5: CoffeeScript - An Introduction

*Let’s sip the Coffee…

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

*Compile a file.

*Compile a folder.

*Putting output in

different folder.

Read Eval Print Loop

coffee –c file.coffee

coffee –c src/

coffee –c src/ -o lib/

Page 6: CoffeeScript - An Introduction

*Magic compile…

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

*The –w switch makes it happen.coffee –cw src/ -o lib/

-w switch also watches for subdirectories

Page 7: CoffeeScript - An Introduction

*Watch out that SPACE!!!

*White space considerations.

*Indent your code properly.

*No need to use special cartoon

like characters in the code.

*Freedom from that semicolon.

CS is very sensitive towards it

Why would I need to do so?

Those are really obstructive

Though I’m optional in JS

You’ll need me when writing multiple lines of

code in a single shot

Page 8: CoffeeScript - An Introduction

Variable and Scope…

*Use of the var keyword is strictly prohibited.

*CoffeeScript saves us from creating global variables.

*What if I need to create one/more?

We can attach them to the global window object.

But be cautious!!!

Then how would I create one?

Page 9: CoffeeScript - An Introduction

*Interpolation, Heredocs and

RegEx…

*“Hope if it prints the value of #{interest}.”

*A multiline string which may have

interpolation inside it.

*var regEx = /\d{3}-\d{8}/

#{} can contain any valid

CoffeeScript inside the string

This RegEx could be worse.

regEx = ///\d{3}-\d{8}

///

Use ””” quotes that’ll even

preserve the space

Page 10: CoffeeScript - An Introduction

*Comments…

*# 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.

###

Page 11: CoffeeScript - An Introduction

*Operators

*== or ===

*!= or !==

*?

Equal or Identical (equal and of the same

type)?

Not equal or Not identical?

Existential operator3 Usage• Variable declarations check

?• Object existence

?.• Is member a method

?()

Page 12: CoffeeScript - An Introduction

*Aliases

CoffeeScript JavaScript

*is ===

*isnt !==

*not !

*and &&

*or ||

*true, yes, no true

*false, no, off false

*@, this this

*:: prototype

*of in

*in N/A

Word of caution!!!isnt and is not are

not same

Page 13: CoffeeScript - An Introduction

*If/Unless…

*if var then alert “true”

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

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

alert “true” if var

That’s ternary ?:

If the condition is false

Page 14: CoffeeScript - An Introduction

*Switch…

*switch var

when “val1”, “val2”

when “val3”

else

We don’t need the break keyword anymore

Page 15: CoffeeScript - An Introduction

*Functions and parameters…

*->

*do ->

*funcName = (param1, param2) -> alert “Hi”

*someFunc = (param = val) ->

*I’ll always return the last statement.

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

Though I’m Anonymous

Instant function calling

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

Functions can take default arguments

Hope if I could call the

-> without params

Page 16: CoffeeScript - An Introduction

*Splats… …

*Variable number of arguments to the function.

*someFunc = (etc…) ->

Believe me it’s one of the best

aroma of CoffeeScript

Page 17: CoffeeScript - An Introduction

*Arrays…

*Arrays in CoffeeScript are no different than in JavaScript.

*Searching.

*Swapping.

*Ranges.

*Slicing arrays.

*Splicing/Replacing array values.

[x, y] = [y, x]Maximum size is 21

Page 18: CoffeeScript - An Introduction

*Objects/Hashes…

*Creating objects with literal syntax.

*Creating objects from variables.

*Getting and setting attributes.

JSON is breeze here

Page 19: CoffeeScript - An Introduction

*Loops and Iterations…

*for val in array

*for key, val of object

*while condition

You may append by and when

You may append when

own may come here

Remember the hasOwnProperty

method?

It’s our old and only

friend here

until is not bad option either.

Page 20: CoffeeScript - An Introduction

*Comprehensions…

*What these are?

Comprehensions are, essentially, loops and

their code blocks on the same line.

Page 21: CoffeeScript - An Introduction

*Classes…

*class Employee

*The constructor function

*Inheritance

*Class level functions

*Prototype

You’ll start to love

CoffeeScript

You know how the constructor

works

But there’s some hack here

Mmm… not exactlyBut it’s

Also known as non-instance

functions

Don’t dare to forget me

Page 22: CoffeeScript - An Introduction

*CoffeeScript in Browser…

*<script type=“text/coffeescript”>

// Some CoffeeScript here

</script>

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

extras/coffee-script.js

Page 23: CoffeeScript - An Introduction

*jQuery & Example app…

*How can I write jQuery using CoffeeScript?

Please see the example app

Page 24: CoffeeScript - An Introduction

*Where it may fit???

*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.

Page 25: CoffeeScript - An Introduction

*Questions???

Page 26: CoffeeScript - An Introduction

*Thank you for sipping the Coffee

with ME…

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

Page 27: CoffeeScript - An Introduction

*Bibliography

*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