Coffee Script
Hoje eu dei uma olhada mais afundo na linguagem coffee Script. A linguagem é bem enxuta o que facilita a vida de quem precisa escrever muito código além de manter uma boa legibilidade para futuras manutenções mas é importante lembrar que coffee Script não é um Framework.
Eu não pretendo fazer deste artigo um mini-tutorial pra aprendizado, até por que já tem muita coisa no site oficial e o Fábio Akita já escreveu algo neste post o que pretendo abordar aqui são exemplos que não encontrei com muita facilidade.
Antes do código vamos a algumas considerações importantes:
- assim como em Ruby todos os métodos retornam a ultima linha.
- assim como em Ruby nas chamadas não é preciso utilizar parênteses se for o primeiro nível.
- você pode utilizar coffee Script junto com seu Framework javascript predileto.
- o código tem que ser compilado.
Agora vamos a alguns exemplos de código.
Utilizando outro framework (jQuery):
list_pages: ->
html: ""
for page in pages
html += '<li>' + page.image + '</li>'
$("#pages").html(html)Quando compilado gera o arquivo abaixo:
var list_pages; list_pages = function() { var *a, _b, *c, html, page; html = ""; _b = pages; for (*a = 0, _c = _b.length; _a < _c; *a++) { page = *b[*a]; html += '<li>' + page.image + '</li>'; } return $("#pages").html(html); };
Adicionar métodos dinamicamente em uma classe:
Page.image: (type) -> type ||= 'thumb' '/images/'+page.id+'/'+type+'.jpg'
Quando compilado gera o arquivo abaixo:
Page.image = function(type) { type = type || 'thumb'; return '/images/' + page.id + '/' + type + '.jpg'; };
Adicionar métodos dinamicamente em um objeto:
Math.max_min: (value, max, min) -> this.max this.min(value, min), max
Quando compilado gera o arquivo abaixo:
Math.max_min = function(value, max, min) { return this.max(this.min(value, min), max); };
Criar uma nova função:
erro: -> alert "aconteceu um erro"
Quando compilado gera o arquivo abaixo:
var erro; erro = function() { return alert("aconteceu um erro"); };
Passar uma função como parametro:
$(document).bind 'keyup', (e) -> eval(keys[e.keyCode])
Quando compilado gera o arquivo abaixo:
$(document).bind('keyup', function(e) { return eval(keys[e.keyCode]); });
Recomendo a quem ainda não conhece entrar no site oficial, instalar e começar a brincar, pois é uma ótima prática de aprendizagem além de facilitar a manutenção futura de seus projetos. Caso Você tenha alguma dúvida basta criar um comentário logo abaixo.