Quelqu'un a-t-il utilisé Coffeescript pour une application de production? [fermé]

94

Coffeescript a l' air plutôt cool. Quelqu'un l'a-t-il utilisé? Quels sont ses avantages et ses inconvénients?

Esteban Araya
la source
En relation: stackoverflow.com/questions/6245341/…
Trevor Burnham

Réponses:

113

Nous avons commencé à utiliser CoffeeScript dans notre produit - un site Web non public qui est essentiellement une application pour parcourir certains types de données. Nous utilisons CoffeeScript comme compilateur en ligne de commande (pas sur le serveur, ce que nous aimerions éventuellement faire).

AVANTAGES (pour nous):

  • Il se débarrasse de beaucoup de fouillis inutiles en javascript (par exemple, accolades, points-virgules, certains crochets) dans la mesure où le code est plus propre et plus facile à comprendre en un coup d'œil que javascript
  • 20 à 30% de lignes de code en moins que javascript (pour faire exactement la même chose)
  • CoffeeScript supprime non seulement le bruit, mais ajoute des mots-clés, des classes et des fonctionnalités telles que heredocs pour rendre le codage plus propre et un peu plus agréable
  • Compte tenu des points précédents, il est sans aucun doute plus rapide de coder dans CoffeeScript une fois que vous avez appris les ficelles du métier

LES INCONVÉNIENTS

  • Lorsque vous utilisez le compilateur de ligne de commande: pour déboguer, vous recherchez un code différent lors de la résolution du problème (javascript) comme lors de l'écriture du correctif (coffeescript). Cependant, quelque peu incroyable, notre CoffeeScript est tellement génial que nous n'avons jamais eu besoin de le déboguer!

Surtout, nous pouvons faire demi-tour à tout moment. Notre compilateur coffeescript produit simplement du javascript lisible, donc si quelqu'un change d'avis ou ne peut pas comprendre quelque chose, alors nous pouvons simplement revenir à l'utilisation du javascript produit par coffeescript - et continuer à coder.

PandaWood
la source
1
PandaWood réussit parfaitement sur tous les points. Je l'utilise en production pour tous mes clients cette année avec beaucoup de succès. Nous utilisons Buildr comme compilateur car il prend en charge le regroupement de fichiers coffeescript et javascript en un seul. github.com/balupton/buildr.npm
balupton
13
"notre CoffeeScript est tellement génial que nous n'avons jamais eu besoin de le déboguer!" Ehh ... vraiment? Vos données correspondent toujours à vos attentes? Vous n'avez jamais eu d'imprévu thisou envoyé le mauvais type à une fonction? Je ne pense pas que vous ayez encore fait quelque chose d'intéressant si vous n'avez pas eu à "déboguer quoi que ce soit".
Ryan Florence
8
@rpflo si vous remarquez les mots "Nous avons commencé à utiliser Coffeescript ..." et associez cela à la déclaration incriminée, et prenez-la dans le contexte léger dans lequel elle est donnée - je pense que tout le monde pourrait être d'accord , qu'il y a peu de raisons de s'inquiéter. Il est tout à fait probable, d'après le texte que j'ai donné, que nous ayons simplement converti le javascript déjà fonctionnel en coffeescript, donc aucun débogage sérieux n'est encore nécessaire
PandaWood
3
About the Con ', maintenant avec Source-Maps qui n'est plus vraiment un problème, compilez simplement avec -met vous êtes bon.
omeid
@omeid bon point. J'ai suivi cela et j'ai réussi à faire fonctionner les cartes source dans Chrome avec coffeescript
PandaWood
27

Nous utilisons coffeescript pour tous les javascript de BusyConf . Une grande partie de BusyConf est une application côté client qui s'exécute dans les navigateurs, y compris la prise en charge du mode hors connexion.

Tout notre code coffeescript est entièrement testé. Les tests eux-mêmes sont écrits en coffeescript et utilisent le framework Qunit (qui est écrit en javascript). Nous avons également écrit une extension du framework Qunit qui rend les tests plus agréables. L'extension Qunit est écrite en CoffeeScript . Notre application a une version mobile qui est écrite en CoffeeScript, et elle utilise le framework Sencha Touch (qui est écrit en javascript).

Ce qu'il faut retenir de cela, c'est que vous pouvez mélanger librement des dépendances javascript dans votre application, mais tout le code que vous écrivez (votre code d'application, vos tests, etc.) peut (et devrait!) Être coffeescript.

Jim Garvin
la source
24

Près d'un an plus tard, cela vaut la peine de publier quelques mises à jour:

  1. Ruby on Rails 3.1 intègre le support officiel de CoffeeScript, ce qui signifie qu'il sera beaucoup plus utilisé dans le monde réel. J'ai donné une conférence à RailsConf le mois dernier, où la plupart des participants n'avaient jamais entendu parler de CoffeeScript auparavant et - étant donné le fort soutien de dhh - étaient impatients d'y participer.
  2. Il y a un livre sur CoffeeScript, actuellement en eBook et bientôt en version imprimée à partir de The Pragmatic Bookshelf. Cela s'appelle CoffeeScript: Accelerated JavaScript Development , et c'est vraiment par vous. Il est basé sur CoffeeScript 1.1.1.
  3. La langue a en fait très peu changé au cours des six mois entre 1.0 et 1.1.1; presque tous les changements sont considérés comme des «corrections de bogues». J'ai dû apporter très peu de modifications au code du livre pour la transition de 1.0.1 à 1.1.1. Cependant, je suis sûr que la langue verra des changements plus importants à l'avenir.

La liste la plus définitive des projets CoffeeScript se trouve sur la page In the Wild du wiki CoffeeScript .

Je dirais que la plupart de l'utilisation de CoffeeScript en production jusqu'à présent est en conjonction avec Appcelerator pour créer des applications iPhone / Android. (Wynn Netherland de The Changelog a blurbé mon livre en décrivant CoffeeScript comme "mon arme secrète pour le développement mobile iOS, Android et WebOS"), mais il y aura beaucoup plus d'utilisation dans les applications de production Rails - et, je l'espère, ailleurs - Dans les mois à venir.

Trevor Burnham
la source
10

J'adore vraiment Coffeescript ces jours-ci. Essentiellement, toute l' application iPhone HotelTonight y est écrite (en utilisant Appcelerator Titanium, qui vous permet d'écrire des applications «natives» en JavaScript - ce ne sont pas des applications Web, par exemple Phonegap). J'ai choisi d'utiliser Coffeescript dans ce cas car cela facilite l'organisation et la maintenance d'une grande quantité de JS. Je trouve également qu'il est tout simplement beaucoup plus agréable d'écrire du code avec Coffeescript (par rapport à JavaScript). Nous utilisons également Coffeescript pour le JS dans notre application Rails, mais il s'agit d'une quantité incroyablement mineure / petite de code par rapport à l'ensemble de l'application téléphonique.

Les pros ont principalement à voir avec une syntaxe plus agréable, mais aussi avec le fait qu'elle standardise un mécanisme OO, puis ajoute quelques ajouts intéressants (compréhension de liste, quelques éléments de portée, etc.).

Les inconvénients sont presque nuls pour moi. Le principal est qu'il s'agit d'une couche supplémentaire à déboguer. Vous devrez regarder le JS généré (qui est TRÈS lisible et agréable), puis mapper cela à votre code Coffeescript. Pour nous, cela n'a pas du tout été un problème, mais YMMV.

En fin de compte, je pense qu'il n'y a aucun risque à l'utiliser sur une application de production, alors ne laissez pas cela être un bloqueur. Ensuite, essayez-le. Écrivez du code avec lui, comparez-le à ce que vous écririez dans JS, regardez le code généré pour voir si vous êtes à l'aise de le lire pour les besoins de débogage. Aussi, passez du temps dans l'IRC #coffeescript, les gens y sont bons. Et enfin, voyez comment il s'intégrerait à votre application, par exemple quel est votre processus de "construction" (par exemple pour Rails, essayez Barista, pour quelque chose de autonome, utilisez simplement le "coffee -w" inclus, etc.).

chrisrbailey
la source
3

Coffeescript facilite vraiment l'écriture de JS. Vous vous retrouvez avec un code plus propre et plus efficace.

Cela étant dit, vous ne pouvez toujours faire que ce que vous pouvez faire dans vanilla JS. Une fois que vous utilisez suffisamment de coffeescript, il devient beaucoup plus facile d'écrire un (bon) JS.

Donc, si vous n'avez pas utilisé JS une tonne, je suggérerais plutôt d'apprendre coffescript. Vous obtiendrez un code meilleur, plus propre et moins bogué. Si vous maîtrisez déjà JS, ce n'est peut-être pas une bonne idée de commencer à utiliser coffeescript sur une "vraie" application.

(Aussi, coffeescript me dérange un peu en ce sens qu'il semble encourager un code plutôt "floofy". Je ne sais pas si c'est une bonne ou une mauvaise chose, mais cela semble un cas extrême de TMTOWTDI)

Zach
la source
25
Je ne suis pas d'accord avec la recommandation d'apprendre coffeescript au lieu de javascript, et aussi l'idée qu'une fois couramment en javascript, apprendre / utiliser coffeescript n'est pas utile. Comprendre javascript est fondamental pour les développeurs Web. Comprendre le javascript que votre code coffeescript générera est nécessaire. Pour ceux qui maîtrisent déjà le javascript, coffeescript sera un appareil magique et révolutionnaire, euh, un outil.
Jim Garvin
3
@Jim Garvin, d'accord. Il est important que les gens apprennent leur javascript, je dirais aussi qu'il serait probablement impossible d'apprendre coffeescript avant javascript de toute façon car toutes les ressources pour un débutant seront écrites dans de bons js à l'ancienne (à moins que Rick Olsen ne décide soudainement de commencer à publier quelques début des tutoriels JS sur son blog).
Daniel Mendel
2
Vous devez également comprendre Javascript pour écrire Coffeescript. Pour que vous puissiez déboguer votre code en cas de problème.
Blaise le
Mise à jour: CoffeeScript a maintenant suffisamment de documents décents et les cartes sources rendent le débogage du code JS inutile. JavaScript n'est qu'une cible de nos jours. L'apprentissage de JS est toujours très utile, mais un débutant pourrait apprendre suffisamment de CoffeeScript, sans connaître aucun JavaScript, pour commencer à coder.
Carl Smith
3

Notez que bien qu'il existe un compilateur, vous n'obtenez pas de vérification statique en raison de la nature dynamique de JavaScript. Comme écrit dans la FAQ:

Analyse statique

CoffeeScript utilise un compilateur direct source-source. Aucune vérification de type n'est effectuée et nous ne pouvons pas déterminer si une variable existe même ou non. Cela signifie que nous ne pouvons pas implémenter des fonctionnalités que d'autres langages peuvent intégrer nativement sans des vérifications d'exécution coûteuses. En conséquence, toute fonctionnalité reposant sur ce type d'analyse ne sera pas prise en compte.

La prise en charge de l'IDE est moins mature que celle de JavaScript (Cloud9 prend en charge la mise en évidence de la syntaxe, mais Eclipse JSDT a des refactorisations et plus): /programming/4084167/ide-or-its-add-in-for-coffescript -programmation

thSoft
la source