web-dev-qa-db-fra.com

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

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

93
Esteban Araya

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

PROS (pour nous):

  • Il supprime beaucoup d'encombrement inutile 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 comme 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 en CoffeeScript une fois que vous avez appris les cordes

CONTRE

  • Lorsque vous utilisez le compilateur en ligne de commande: pour déboguer, vous regardez 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 revenir en arrière à tout moment. Notre compilateur de coffeescript ne fait que produire 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 que coffeescript a produit - et continuer à coder.

113
PandaWood

Nous utilisons coffeescript pour tout du javascript dans 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 ligne.

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

La conséquence est que vous pouvez mélanger librement les dépendances javascript dans votre application, mais tout le code que vous écrivez (code de votre application, tests, etc.) peut (et devrait!) Être de type coffeescript.

27
Jim Garvin

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 va voir beaucoup plus d'utilisation dans le monde réel. J'ai donné une conférence à RailsConf le mois dernier, où la plupart des participants n'avaient pas entendu de CoffeeScript avant et - étant donné la forte approbation de dhh - étaient impatients de s'y lancer.
  2. Il y a un livre sur CoffeeScript, actuellement en eBook et qui sera bientôt imprimé depuis The Pragmatic Bookshelf. Cela s'appelle CoffeeScript: développement JavaScript accéléré , et c'est vraiment le vôtre. 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 toutes les modifications sont qualifiées de "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 majeure partie de l'utilisation de CoffeeScript en production jusqu'à présent est associée à Appcelerator pour créer des applications iPhone/Android. (Wynn Netherland de The Changelog a fait de la publicité à 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 la production Rails applications - et, je l'espère, ailleurs - dans les prochains mois.

24
Trevor Burnham

Coffeescript a été utilisé dans le lecteur Ars Technica pour iPad http://arstechnica.com/Apple/news/2010/11/introducing-the-ars-technica-reader-for-ipad.ars

12
Drew LeSueur

J'adore vraiment Coffeescript ces jours-ci. Essentiellement, l'intégralité de l'application HotelTonight iPhone y est écrite (en utilisant Appcelerator Titanium, qui vous permet d'écrire des applications "natives" en JavaScript - ce ne sont pas des applications Web, comme 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 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é de code incroyablement mineure/faible par rapport à l'ensemble de l'application téléphonique.

Les avantages ont surtout à voir avec le simple fait d'être une syntaxe plus agréable, mais aussi avec le fait qu'elle standardise un mécanisme OO, puis ajoute de jolis ajouts (listes de compréhension, certaines choses 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 le mapper à votre code Coffeescript. Pour nous, cela n'a pas été un problème du tout, mais YMMV.

En fin de compte, mon avis est qu'il n'y a aucun risque en termes d'utilisation sur une application de production, alors ne laissez pas cela bloquer. Ensuite, allez l'essayer. Écrivez du code avec, comparez cela à ce que vous écririez dans JS, regardez le code généré pour voir si vous êtes à l'aise de pouvoir le lire pour les besoins de débogage. Aussi, traînez dans l'IRC #coffeescript, les gens sont bons là-bas. 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.).

10
chrisrbailey

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 de source à source. Aucune vérification de type n'est effectuée et nous ne pouvons pas déterminer si une variable existe ou non. Cela signifie que nous ne pouvons pas implémenter des fonctionnalités que d'autres langages peuvent intégrer en mode natif sans vérifications d'exécution coûteuses. Par conséquent, toute fonctionnalité qui s'appuie sur ce type d'analyse ne sera pas prise en compte.

La prise en charge IDE est moins mature que celle de JavaScript (Cloud9 prend en charge la mise en évidence de la syntaxe, mais Eclipse JSDT a des refactorings et plus): https://stackoverflow.com/questions/4084167/ide-or-its-add-in -pour-programmation-coffescript

3
thSoft

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 (bon) JS.

Donc, si vous n'avez pas utilisé JS une tonne, je suggère plutôt d'apprendre le 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.

(De plus, coffeescript me dérange un peu en ce 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)

3
Zach