coffee script

44
JavaScript “bien hecho” Yeray Darias CoffeeScript

Upload: yeray-darias

Post on 10-May-2015

116 views

Category:

Software


0 download

DESCRIPTION

Fast introduction to Coffee Script, a valid alternative to Java Script.

TRANSCRIPT

Page 1: Coffee Script

JavaScript “bien hecho”Yeray Darias

CoffeeScript

Page 3: Coffee Script

Antes de CoffeeScript fue JavaScript

Un poco de historia reciente

Page 4: Coffee Script

Finales del año 1994 ...

Page 5: Coffee Script

En el año 1995 ...

Brendan Eich idea y programa

10 DíasMocha en apenas

Page 6: Coffee Script

Mocha

LiveScript

JavaScript

Page 7: Coffee Script

Allá por el año 1997 ...

Page 8: Coffee Script

A principios del 2000 ...

JavaScript tenía algunos amigos pero no era muy popular

Page 9: Coffee Script

En la actualidad ...

JavaScript está en todas partes

Page 10: Coffee Script

Javascript

Page 11: Coffee Script

¿Qué demonios es CoffeeScript?

Pongamonos en situación

Page 12: Coffee Script

Es una idea que tuvo

Page 13: Coffee Script

“CoffeeScript it’s just JavaScript”

Page 14: Coffee Script

CoffeeScript esun lenguaje de programación

que “genera”

JavaScript

Page 15: Coffee Script

JavaScript WTFs

Page 16: Coffee Script

Douglas CrockfordJavaScript

The good parts

Page 17: Coffee Script

Global variables

CoffeeScript solved!

Page 18: Coffee Script

var message = “hola”;!!function saluda() {! return message;!}

var message = “adios”;!!function despidete() {! return message;!}

Global variables

Si ambos ficheros están “cargados”, ¿Cuál es la salida esperada en cada

función?

Page 19: Coffee Script

Global variables

CoffeeScript no crea variables globales de forma implícita

(function() {! var message, saluda;!! message = "hola";!! saluda = function() {! return message;! };!}).call(this);

message = "hola"!!saluda = () -> ! message

Page 20: Coffee Script

Scopes

Page 21: Coffee Script

Scopes

Todas las variables en una función se declaran al principio

(function() {! var message, saluda;!! message = "hola";!! saluda = function() {! return message;! };!}).call(this);

message = "hola"!!saluda = () -> ! message

Page 22: Coffee Script

Semicolons

CoffeeScript solved!

Page 23: Coffee Script

Semicolons

CoffeeScript autocompleta los ;

(function() {! var message, saluda;!! message = "hola";!! saluda = function() {! return message;! };!}).call(this);

message = "hola"!!saluda = () -> ! message

Page 24: Coffee Script

Reserved words

CoffeeScript solved!

Page 25: Coffee Script

Reserved words

CoffeeScript escapa las palabras reservadas automáticamente

var myObject;!!myObject = {! "case": 'keyword',! tutu: 'allowed name'!};

myObject = ! case: 'keyword'! tutu: 'allowed name'

Page 26: Coffee Script

typeof

Page 27: Coffee Script

Equality comparisons

CoffeeScript solved!

Page 28: Coffee Script

Equality comparisons

CoffeeScript siempre usa los operadores como ===, !==, ...

var testFunction;!!testFunction = function(input) {! if (input === 'string') {! 'string';!! }! if (input === 9) {! return 'number nine';! }!};

testFunction = (input) -> ! if (input == 'string')! 'string'! if (input == 9)! 'number nine'

Page 29: Coffee Script

eval()

Page 30: Coffee Script

continue

Page 31: Coffee Script

switch fall through

CoffeeScript solved!

Page 32: Coffee Script

switch fall throughBond = (input) -> ! switch input! when 'Sean Connery', 'Daniel Craig'! 'Fucking crack'! when 'Roger Moore'! 'A bit boring'

var Bond;!!Bond = function(input) {! switch (input) {! case 'Sean Connery':! case 'Daniel Craig':! return 'Fucking crack';! case 'Roger Moore':! return 'A bit boring';! }!};!

Todas las opciones acaban con un return

Page 33: Coffee Script

Global variablesScopesSemicolonsReserved wordstypeofEquality comparisoneval()continueSwitch fall through

Page 34: Coffee Script

CoffeeScript “fabrica”

bloques JavaScript

Page 35: Coffee Script

Control de flujomood = greatlyImproved if singing!!if happy and knowsIt! clapsHands()!else! showIt()!!date = if friday then sue else jill!!isToday = yes unless yesterday or tomorrow!!// -----------------------------------------------------!!cholesterol = 127!!healthy = 200 > cholesterol > 60!

Chained comparisons

Everything a expression

Page 36: Coffee Script

Control de flujo

Bond = (input) -> ! switch input! when 'Sean Connery', 'Daniel Craig'! 'Fucking crack'! when 'Roger Moore'! 'A bit boring'! else! 'No comments'

Page 37: Coffee Script

Bucles# Health conscious meal.!foods = ['broccoli', 'spinach', 'chocolate']!eat food for food in foods when food isnt 'chocolate'!!countdown = (num for num in [10..1])!!# Econ 101!if this.studyingEconomics! buy() while supply > demand! sell() until supply > demand!!while age < 18! canNotSmoke()! canNotDrink()

Page 38: Coffee Script

Funcionessquare = (x) -> x * x!cube = (x) -> square(x) * x!!fill = (container, liquid = "coffee") ->! "Filling the #{container} with #{liquid}..."!!// --------------------------------------------------!!awardMedals = (first, second, others...) ->! gold = first! silver = second! rest = others!!!

Splats

String interpolation

Page 39: Coffee Script

Operators & aliasesCoffeeScript JavaScript

is ===isnt !==not !and &&or ||

true, yes, on truefalse, no, off false

@, this thisof inin no JS equivalent

Page 40: Coffee Script

‘The’ operator

? es el operador existencial en

CoffeeScript

Page 41: Coffee Script

Clasesclass Animal! constructor: (@name) ->!! move: (meters) ->! alert @name + " moved #{meters}m."!!class Snake extends Animal! move: ->! alert "Slithering..."! super 5!!class Horse extends Animal! move: ->! alert "Galloping..."! super 45

Page 42: Coffee Script

Clases!!sam = new Snake "Sammy the Python"!tom = new Horse "Tommy the Palomino"!!sam.move()!tom.move()!

Page 43: Coffee Script

Function bindingAccount = (customer, cart) ->! @customer = customer! @cart = cart!! $('.shopping_cart').bind 'click', (event) =>! @customer.purchase @cart!!var Account;!!Account = function(customer, cart) {! var _this = this;! this.customer = customer;! this.cart = cart;! return $('.shopping_cart').bind('click', function(event) {! return _this.customer.purchase(_this.cart);! });!};!

Page 44: Coffee Script

Ahora toca programar