Alguém usou o Coffeescript para um aplicativo de produção? [fechadas]

94

O Coffeescript parece muito legal. Alguém já usou? Quais são seus prós e contras?

Esteban Araya
fonte
Relacionado: stackoverflow.com/questions/6245341/…
Trevor Burnham,

Respostas:

113

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).

PROS (para nós):

  • Ele se livra de uma grande quantidade de desordem desnecessária em javascript (por exemplo, colchetes, ponto e vírgula, alguns colchetes) na medida em que o código é mais limpo e mais fácil de compreender à primeira vista do que javascript
  • 20-30% menos linhas de código do que javascript (para fazer exatamente a mesma coisa)
  • CoffeeScript não apenas remove o ruído, mas adiciona palavras-chave, classes e recursos como heredocs para tornar a codificação mais limpa e um pouco mais agradável
  • Considerando os pontos anteriores, é sem dúvida mais rápido codificar em CoffeeScript depois que você aprender o básico

CONTRAS

  • Ao usar o compilador de linha de comando: para depurar, você está olhando para um código diferente ao resolver o problema (javascript) e ao escrever a correção (coffeescript). No entanto, um tanto inacreditavelmente, nosso CoffeeScript é tão incrível que nunca precisamos depurá-lo!

É 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.

PandaWood
fonte
1
O PandaWood acerta em todos os pontos. Tenho usado na produção para todos os meus clientes este ano com grande sucesso. Estamos usando o Buildr como compilador, pois ele suporta o agrupamento de arquivos coffeescript e javascript em um. github.com/balupton/buildr.npm
balupton
13
"nosso CoffeeScript é tão incrível que nunca precisamos depurá-lo!" Ehh ... sério? Seus dados sempre correspondem às suas expectativas? Você nunca teve um inesperado thisou 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".
Ryan Florence
8
@rpflo se você notar as palavras "Nós começamos a usar o Coffeescript ..." e comparar isso com a declaração ofensiva e interpretá-la no contexto despreocupado em que é fornecida - acho que qualquer um poderia concordar , que há poucos motivos para preocupação. É inteiramente provável, pelo texto que forneci, que simplesmente convertemos o javascript já em funcionamento em coffeescript, portanto, nenhuma depuração séria ainda é necessária
PandaWood
3
Sobre o Con ', agora com o Source-Maps que não é mais um problema, apenas compile -me pronto.
omeid
@omeid bom ponto. Acompanhei isso e consegui obter mapas de origem funcionando no Chrome com coffeescript
PandaWood
27

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.

Jim Garvin
fonte
24

Quase um ano depois, vale a pena postar algumas atualizações:

  1. Ruby on Rails 3.1 está incorporando suporte oficial para CoffeeScript, o que significa que terá muito mais uso no mundo real. Eu dei uma palestra na RailsConf no mês passado, onde a maioria dos participantes não tinha ouvido falar do CoffeeScript antes e - dado o forte endosso do dhh - estava ansioso para entrar nele.
  2. Há um livro sobre CoffeeScript, atualmente em e-book e em breve para impressão na The Pragmatic Bookshelf. É chamado de CoffeeScript: Accelerated JavaScript Development , e é feito por mim. É baseado no CoffeeScript 1.1.1.
  3. Na verdade, o idioma mudou muito pouco nos seis meses entre 1.0 e 1.1.1; quase todas as mudanças se qualificam como "correções de bugs". Tive que fazer poucos ajustes no código do livro para a transição de 1.0.1 para 1.1.1. No entanto, tenho certeza de que a linguagem verá mudanças mais significativas no futuro.

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.

Trevor Burnham
fonte
10

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.).

Chrisrbailey
fonte
3

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)

Zach
fonte
25
Não concordo com a recomendação de aprender coffeescript em vez de javascript, e também com a ideia de que, uma vez fluente em javascript, aprender / usar coffeescript não tem valor. Entender o javascript é fundamental para desenvolvedores web. É necessário entender o javascript que seu código coffeescript irá gerar. Para aqueles que já são mestres em javascript, o coffeescript será um dispositivo mágico e revolucionário, er, ferramenta.
Jim Garvin
3
@Jim Garvin, concordou. É importante que as pessoas aprendam seu javascript, eu também diria que provavelmente seria impossível aprender coffeescript antes de javascript de qualquer maneira, pois todos os recursos para um iniciante serão escritos no bom e antigo js (a menos que Rick Olsen de repente decida começar a postar alguns iniciando tutoriais JS em seu blog).
Daniel Mendel
2
Você também precisa entender o Javascript para escrever o Coffeescript. Para que você possa depurar seu código quando algo der errado.
Blaise de
Atualização: CoffeeScript agora tem documentos decentes o suficiente, e mapas de origem tornam a depuração de código JS desnecessária. JavaScript é apenas um alvo hoje em dia. Aprender JS ainda é muito útil, mas um iniciante poderia aprender CoffeeScript o suficiente, sem conhecer JavaScript, para começar a codificar.
Carl Smith de
3

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

thSoft
fonte