BT
x A sua opinião é importante! Por favor preencha a pesquisa do InfoQ sobre os seus hábitos de leitura!

CoffeeScript 1.7: encadeamento sem parênteses, Strings de múltiplas linhas e mais

por Burke Holland , traduzido por Rafael Sakurai em 25 Mar 2014 |

Jeremy Ashkenas liberou a versão 1.7 do CoffeeScript introduzindo algumas mudanças que antecipam o popular conversor do JavaScript.

A versão 1.7 incluí uma das mais populares solicitações da linguagem, o suporte ao encadeamento sem parênteses. Antes da versão 1.7, se o desenvolvedor quisesse encadear funções era necessário o uso de parênteses, que não são mais obrigatórios nas funções em CoffeeScript.

// anterior ao 1.7 - os parênteses são necessários no encadeamento.
$('#element').addClass('active').css({ left: 5 });

// com o 1.7 - não precisa de parênteses.
$ '#element'
.addClass 'active'
.css { left: 5 }

Essa versão também introduziu um suporte adequado para Strings de múltiplas linhas. Nas versões anteriores do CoffeeScript, embora as herestrings, ou strings literais, tentem preservar as linhas novas e espaços em branco, ignoraria o operador `\` que é usado para indicar que duas strings devem ser preservadas na mesma linha. Com a versão 1.7 isso foi corrigido, permitindo que o desenvolvedor possa formatar claramente múltiplas linhas de strings no CoffeeScript.

console.log '''The quick brown fox jumped over the \
lazy dog'''

// saída anterior ao 1.7.
The quick brown fox jumped \nover the lazy dog

// saída agora com o 1.7.
The quick brown fox jumped over the lazy dog

Também foi ampliado a desestruturação dos arrays, que foi o problema aberto de maior duração no repositório do CoffeeScript.

# para obter o último item do array de animais.
animals = [ 'cat', 'dog', 'hippopotamus' ]

# antes do 1.7
hippo = animals[animal.length - 1]

# a partir do 1.7
[..., hippo] = animals

# … sendo depois convertido para:
hippo = animals[animals.length - 1];

A nova convenção dos operadores matemáticos está presente até na função de adição. Há o novo operador de potência, divisão base e operador de módulo (retorna o resto de uma operação de divisão).

# elevado
2 ** 2
# transcrito para...
Math.pow(2, 2);

# divisão
2 // 3
# transcrito para...
Math.floor(2 / 3)

# modulo
2 %% 3
# transcrito para...
var __modulo = function(a, b) { return (a % b + +b) % b; };
__modulo(2, 1);

Outras melhorias incluídas também trazem o CoffeeScript alinhado com o Node.js, dessa forma nenhum procedimento será necessário para executar automaticamente todos os arquivos de um diretório, mas se comportará como Node e somente executará o arquivo index.coffee.

A maior parte do trabalho desenvolvido na versão 1.7 do CoffeeScript (e de fato, grande parte do CoffeeScript nos últimos anos) tem sido feita por membros da comunidade. Segundo Ashkenas "há mais de 100 desenvolvedores que contribuem e atualizam o CoffeeScript". "Seja qual for a adoção que o CoffeeScript tenha criado foi acontecendo por causa do apelo pela ideia dos programadores JavaScript". No que diz respeito ao trabalho realizado na versão 1.7, Ashkenas enviou agradecimentos em especial a Michael Srb pela sua contribuição.

O CoffeeScript aprecia o fato da imensa popularidade, chegando ao ponto de ser o 10º projeto mais popular do GitHub. Também sendo suportado por frameworks como o Ruby on Rails (desde a versão 3.1), e é suportado pelo Visual Studio da Microsoft através do plugin Web Essentials. Para complementar, o criador do JavaScript Brenden Eich expressou como o CoffeeScript influenciou seus pensamentos sobre o futuro do JavaScript.

O usuário do GitHub stefanpenner comentou que no CoffeeScript "... a importação e exportação do ES6 será destruidora ...".

Ashkenas direcionou as funcionalidades do ES6 no CoffeeScript dizendo que:

O CoffeeScript está praticamente pronto - estando muito estável por vários anos - mas continuará a crescer em pequenos caminhos no futuro. Alguns exemplos são: suporte às novas funcionalidades da linguagem JavaScript, aprimoramento no suporte a fonte de mapas, maior elegância da leitura do estilo de programação e mais simplificação nas partes internas do compilador.

Nesse momento, há um projeto criado no Kickstarter para reescrever o compilador do CoffeeScript. O projeto tem sido financiado com sucesso e foi apelidado de CoffeeScriptRedux. Ashkenas vê a criação do novo compilador como um benefício para o CoffeeScript e também disse que "mais compiladores determinam o sucesso de uma determinada linguagem - sendo a saúde da linguagem. E é um beneficio para o CoffeeScript ter múltiplos compiladores independentes".

A versão 1.7 está disponível através do GitHub ou pelo site oficial do CoffeeScript.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT