O Coffeescript parece muito legal. Alguém já usou? Quais são seus prós e contras?
O Coffeescript parece muito legal. Alguém já usou? Quais são seus prós e contras?
Respostas:
Começamos a usar CoffeeScript em nosso produto - um site não público que é basicamente um aplicativo para navegar em certos tipos de dados. Usamos CoffeeScript como um compilador de linha de comando (não no servidor, o que eventualmente gostaríamos de fazer).
É importante ressaltar que podemos voltar a qualquer momento. Nosso compilador de coffeescript está apenas produzindo javascript legível, então se alguém mudar de ideia ou não conseguir descobrir algo, podemos simplesmente voltar a usar o javascript que o coffeescript produziu - e continuar codificando.
this
ou enviou o tipo errado para uma função? Não acho que você tenha feito nada de interessante ainda se não teve que "depurar nada".
-m
e pronto.
Usamos coffeescript para todo o javascript no BusyConf . Uma grande parte do BusyConf é um aplicativo do lado do cliente que roda em navegadores, incluindo suporte para modo offline.
Todo o nosso código coffeescript é totalmente testado. Os próprios testes são escritos em coffeescript e usam o framework Qunit (que é escrito em javascript). Também escrevemos uma extensão para o framework Qunit que torna os testes mais agradáveis. A extensão Qunit é escrita em CoffeeScript . Nosso aplicativo tem uma versão móvel escrita em CoffeeScript e usa a estrutura Sencha Touch (escrita em javascript).
A conclusão é que você pode misturar livremente dependências de javascript em seu aplicativo, mas todo o código que você escreve (seu código de aplicativo, testes, etc) pode (e deve!) Ser coffeescript.
Quase um ano depois, vale a pena postar algumas atualizações:
A lista mais definitiva de projetos CoffeeScript está na página In the Wild do wiki do CoffeeScript .
Eu diria que a maior parte do uso de produção do CoffeeScript até agora é em conjunto com o Appcelerator para criar aplicativos para iPhone / Android. (Wynn Netherland, do The Changelog, descreveu meu livro descrevendo CoffeeScript como "minha arma secreta para desenvolvimento móvel iOS, Android e WebOS"), mas haverá muito mais uso em aplicativos Rails de produção - e, espero, em outros lugares - nos próximos meses.
O Coffeescript foi usado no leitor Ars Technica para iPad http://arstechnica.com/apple/news/2010/11/introducing-the-ars-technica-reader-for-ipad.ars
Eu realmente amo o Coffeescript atualmente. Essencialmente, todo o aplicativo HotelTonight para iPhone é escrito nele (usando o Appcelerator Titanium, que permite que você escreva aplicativos "nativos" em JavaScript - eles não são aplicativos da web, digamos como o Phonegap). Escolhi usar o Coffeescript neste caso porque torna muito mais fácil organizar e manter uma grande quantidade de JS. Também acho muito mais prazeroso escrever código com Coffeescript (vs. JavaScript). Também usamos Coffeescript para o JS em nosso aplicativo Rails, mas esta é uma quantidade incrivelmente pequena / pequena de código em relação a todo o aplicativo de telefone.
Os prós principalmente têm a ver com ser apenas uma sintaxe mais agradável, mas também que padroniza um mecanismo OO e, em seguida, adiciona algumas adições interessantes (compreensões de lista, algumas coisas de escopo, etc.).
Os contras são quase zero para mim. O principal é que é uma camada extra para depurar. Você precisará examinar o JS gerado (que é MUITO legível e bom) e, em seguida, mapeá-lo para seu código Coffeescript. Para nós, isso não foi um problema, mas YMMV.
No final, minha opinião é que não há risco zero em termos de usá-lo em um aplicativo de produção, então, não deixe que isso seja um bloqueador. Então, vá experimentar. Escreva algum código com ele, compare com o que você escreveria em JS, olhe o código gerado para ver se você está confortável em ser capaz de ler isso para as necessidades de depuração. Além disso, vá ao IRC #coffeescript, as pessoas são boas lá. E finalmente, veja como ele se integraria com seu aplicativo, por exemplo, qual é o seu processo de "construção" (por exemplo, para Rails, tente Barista, para algo autônomo, basta usar o "café -w" incluído, etc.).
O Coffeescript realmente torna a escrita JS mais fácil. Você acaba com um código mais limpo e eficiente.
Dito isso, você ainda pode fazer apenas o que pode fazer no vanilla JS. Depois de usar o coffeescript o suficiente, fica muito mais fácil escrever um JS (bom).
Portanto, se você não usou JS muito, sugiro aprender o coffescript. Você obterá um código melhor, mais limpo e com menos erros. Se você já é realmente fluente em JS, pode não ser uma boa ideia começar a usar o coffeescript em um aplicativo "real".
(Além disso, o coffeescript me irrita um pouco porque parece encorajar um código bastante "flutuante". Não sei se é uma coisa boa ou ruim, mas parece um caso extremo de TMTOWTDI)
Observe que, embora haja um compilador, você não obtém verificação estática devido à natureza dinâmica do JavaScript. Conforme escrito no FAQ:
Análise Estática
CoffeeScript usa um compilador direto de fonte para fonte. Nenhuma verificação de tipo é realizada e não podemos descobrir se uma variável existe ou não. Isso significa que não podemos implementar recursos que outras linguagens podem construir nativamente sem verificações de tempo de execução caras. Como resultado, qualquer recurso que dependa desse tipo de análise não será considerado.
O suporte IDE é menos maduro do que o de JavaScript (Cloud9 tem suporte de destaque de sintaxe, mas Eclipse JSDT tem refatorações e mais): /programming/4084167/ide-or-its-add-in-for-coffescript -programação