Giovanni Bassigiovanni@lambda3.com.brblog.lambda3.com.br@giovannibassi
@GiovanniBassi                 3
http://bit.ly/coffeescript-site• Sintaxe mínima• Semântica limpada• Brinquedos novos• É Javascript!
Morte “var”!   a=1   b = "nome"   funcaoAlias = alert
Parênteses são opcionais!   alert "I knew it!"   res = somar 4, 5
Interpolação de strings (finally!)   nome = "Giovanni"   sobrenome = "Bassi"   puts "meu nome é #{nome} #{sobrenome}."   p...
Limpando a cerimônia do Javascriptnas declarações de funções   var soma = function soma(x, y) {        return x + y;   }  ...
Limpando a cerimônia do Javascriptnas declarações de funções   soma = (x, y) ->       x+y                          signifi...
Limpando a cerimônia do Javascriptnas declarações de funções   Soma = (x, y) -> x + y   Chamando:   res = soma 4, 5
Declarar objetos ficou muito fácil pessoa = nome: "Giovanni" Ou... pessoa = nome: "Giovanni", sobrenome: "Bassi" Ou... pes...
Foreach (finally!)   certificacoes = ["PSM I", "PSM II", "PSD", "PSPO"]   for c in certificacoes           puts c
While e Until   balas = 100   shoot = -> puts "shot ##{101 - balas}"; balas--   until balas is 0 then shoot()   while bala...
Palavrinhas chaves bonitasis      ===isnt    !==on      trueyes     trueoff     falseno      falseuntil   while not
Prefix ou postfix   if engine is on          drive car   Ou...   if engine is on then drive car   Ou...   drive car if eng...
Prefix ou postfix   if engine isnt on          drive car   Ou...   drive car unless engine is on
Prefix ou postfix   if verify and x > y           bigger = yes   bigger = yes if verify and x > y
Prefix ou postfix   certificacoes = ["PSM I", "PSM II", "PSD", "PSPO"]   for c in certificacoes           puts c   Ou...  ...
Tudo é são expressões   puts (i for i in [1,2,3])   puts (   try     naoexiste.algo   catch     “não existe”   )   nums = ...
Splats (ou params ou ParamArray)certificacoes = ["PSM I", "PSM II", "PSD", "PSPO"]verificaCerts = (cert1, cert2, outras......
Verificando existência pessoa =        {               nome: "Giovanni",               sobrenome: "Bassi"               pa...
Verificando existência pessoa =        {               nome: "Giovanni",               sobrenome: "Bassi"               pa...
O problema do “this”• “this” varia do contexto de chamada• Isso vai falhar se for feito dentro de um objeto:$(.shopping_ca...
Classes!!! class Person        constructor: (@name, @age) ->        Who: () ->              "This is #{@name} and he is #{...
Métodos estáticos em classesclass Person       constructor: (@name, @age) ->       @familia: -> "Bassi"       Who: () ->  ...
Herançaclass SerVivo       TemCarbono: () -> trueclass Animal extends SerVivo       Locomove: () -> "como?"class Passaro e...
CoffeeScript direto na página <script type="text/coffeescript">        alert i for i in 1..10 </script> <script src="coffe...
CoffeeScript com jQuery$ ->       facaIsso(a, b)       facaAquilo()
Compilando• Compilando on demand diretório “coffee” para  “js”:       coffee -o scripts/js/ -c scripts/coffee/• Observando...
CoffeeScript.org
CoffeeScript.org
Como?
Como?        (versão 0.4.11)
Como?
Como?
Como?http://bit.ly/coffeescriptwindows
Como?
Como? CoffeeScriptRunnerVSPackage
Como?
Como?
A linguagem CoffeeScript
CoffeeScript + VS + ASP.NET MVC
@giovannibassigiovanni@lambda3.com.br
CoffeeScript com Visual Studio e ASP.NET MVC
CoffeeScript com Visual Studio e ASP.NET MVC
CoffeeScript com Visual Studio e ASP.NET MVC
CoffeeScript com Visual Studio e ASP.NET MVC
CoffeeScript com Visual Studio e ASP.NET MVC
Upcoming SlideShare
Loading in...5
×

CoffeeScript com Visual Studio e ASP.NET MVC

2,386

Published on

Palestra ministrada no DevDay 2011 em Belo Horizonte.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

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

No notes for slide

CoffeeScript com Visual Studio e ASP.NET MVC

  1. 1. Giovanni Bassigiovanni@lambda3.com.brblog.lambda3.com.br@giovannibassi
  2. 2. @GiovanniBassi 3
  3. 3. http://bit.ly/coffeescript-site• Sintaxe mínima• Semântica limpada• Brinquedos novos• É Javascript!
  4. 4. Morte “var”! a=1 b = "nome" funcaoAlias = alert
  5. 5. Parênteses são opcionais! alert "I knew it!" res = somar 4, 5
  6. 6. Interpolação de strings (finally!) nome = "Giovanni" sobrenome = "Bassi" puts "meu nome é #{nome} #{sobrenome}." puts "meu nome tem #{nome.length} letras."
  7. 7. Limpando a cerimônia do Javascriptnas declarações de funções var soma = function soma(x, y) { return x + y; } Chamando: var res = soma(4, 5)
  8. 8. Limpando a cerimônia do Javascriptnas declarações de funções soma = (x, y) -> x+y significant white space Chamando: res = soma 4, 5
  9. 9. Limpando a cerimônia do Javascriptnas declarações de funções Soma = (x, y) -> x + y Chamando: res = soma 4, 5
  10. 10. Declarar objetos ficou muito fácil pessoa = nome: "Giovanni" Ou... pessoa = nome: "Giovanni", sobrenome: "Bassi" Ou... pessoa = { nome: "Giovanni" sobrenome: "Bassi" nomeCompleto: -> "#{@nome} #{@sobrenome}" }
  11. 11. Foreach (finally!) certificacoes = ["PSM I", "PSM II", "PSD", "PSPO"] for c in certificacoes puts c
  12. 12. While e Until balas = 100 shoot = -> puts "shot ##{101 - balas}"; balas-- until balas is 0 then shoot() while balas isnt 0 then shoot()
  13. 13. Palavrinhas chaves bonitasis ===isnt !==on trueyes trueoff falseno falseuntil while not
  14. 14. Prefix ou postfix if engine is on drive car Ou... if engine is on then drive car Ou... drive car if engine is on
  15. 15. Prefix ou postfix if engine isnt on drive car Ou... drive car unless engine is on
  16. 16. Prefix ou postfix if verify and x > y bigger = yes bigger = yes if verify and x > y
  17. 17. Prefix ou postfix certificacoes = ["PSM I", "PSM II", "PSD", "PSPO"] for c in certificacoes puts c Ou... puts c for c in certificacoes
  18. 18. Tudo é são expressões puts (i for i in [1,2,3]) puts ( try naoexiste.algo catch “não existe” ) nums = while num -= 1 then "num: #{num}"
  19. 19. Splats (ou params ou ParamArray)certificacoes = ["PSM I", "PSM II", "PSD", "PSPO"]verificaCerts = (cert1, cert2, outras...) -> puts "A primeira eh #{cert1}" puts "A segunda eh #{cert2}" puts "E tenho outras: #{outras}"verificaCerts "PSM I", "PSM II", "PSD", "PSPO"verificaCerts certificacoes...
  20. 20. Verificando existência pessoa = { nome: "Giovanni", sobrenome: "Bassi" pai: { nome: "o cara" } } ancestral = pessoa.mae ? pessoa.pai puts ancestral.nome puts pessoa.pai.nome puts pessoa.mae.nome #erro puts pessoa.mae?.nome #ok
  21. 21. Verificando existência pessoa = { nome: "Giovanni", sobrenome: "Bassi" pai: { nome: "o cara" } } ancestral = pessoa.mae ? pessoa.pai puts ancestral.nome puts pessoa.pai.nome puts pessoa.mae.nome #erro puts pessoa.mae?.nome #ok
  22. 22. O problema do “this”• “this” varia do contexto de chamada• Isso vai falhar se for feito dentro de um objeto:$(.shopping_cart).bind(click, function (event) { this.loja.darDesconto(this.pedido);});• Não com CoffeeScript:$(.shopping_cart).bind click, (event) => @loja.darDesconto @pedido
  23. 23. Classes!!! class Person constructor: (@name, @age) -> Who: () -> "This is #{@name} and he is #{@age} years old" person = new Person "Giovanni", 33 puts person.name puts person.Who()
  24. 24. Métodos estáticos em classesclass Person constructor: (@name, @age) -> @familia: -> "Bassi" Who: () -> "This is #{@name}"puts Person.familia() #: Bassi
  25. 25. Herançaclass SerVivo TemCarbono: () -> trueclass Animal extends SerVivo Locomove: () -> "como?"class Passaro extends Animal Locomove: () -> "#{super()} voa"puts (new Passaro()).Locomove()puts (new SerVivo()).TemCarbono()
  26. 26. CoffeeScript direto na página <script type="text/coffeescript"> alert i for i in 1..10 </script> <script src="coffee-script.js"></script>
  27. 27. CoffeeScript com jQuery$ -> facaIsso(a, b) facaAquilo()
  28. 28. Compilando• Compilando on demand diretório “coffee” para “js”: coffee -o scripts/js/ -c scripts/coffee/• Observando mudanças e compilando automaticamente: coffee -w -c arquivo.coffee
  29. 29. CoffeeScript.org
  30. 30. CoffeeScript.org
  31. 31. Como?
  32. 32. Como? (versão 0.4.11)
  33. 33. Como?
  34. 34. Como?
  35. 35. Como?http://bit.ly/coffeescriptwindows
  36. 36. Como?
  37. 37. Como? CoffeeScriptRunnerVSPackage
  38. 38. Como?
  39. 39. Como?
  40. 40. A linguagem CoffeeScript
  41. 41. CoffeeScript + VS + ASP.NET MVC
  42. 42. @giovannibassigiovanni@lambda3.com.br

×