Coffeescript a l'air plutôt cool. Quelqu'un l'a-t-il déjà utilisé ? Quels sont ses avantages et ses inconvénients ?
Réponses
Trop de publicités?Nous avons commencé à utiliser CoffeeScript dans notre produit - un site web non public qui est essentiellement une application permettant de parcourir certains types de données. Nous utilisons CoffeeScript comme compilateur en ligne de commande (et non sur le serveur, ce que nous aimerions éventuellement faire).
AVANTAGES (pour nous) :
- Il se débarrasse d'un grand nombre d'encombrements inutiles en javascript (par exemple les accolades, les points-virgules, certaines parenthèses) au point que le code est plus propre et plus facile à comprendre en un coup d'œil qu'en javascript.
- 20-30% de lignes de code en moins que javascript (pour faire exactement la même chose)
- CoffeeScript ne se contente pas d'éliminer 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 l'on a appris les ficelles du métier
CONS
- Lorsque vous utilisez le compilateur en ligne de commande : pour déboguer, vous regardez un code différent lorsque vous résolvez le problème (javascript) et lorsque vous écrivez le correctif (coffeescript). Cependant, aussi incroyable que cela puisse paraître, notre CoffeeScript est tellement génial que nous n'avons jamais eu besoin de le déboguer !
Il est important de noter que nous pouvons faire marche arrière à tout moment. Notre compilateur coffeescript ne fait que produire du javascript lisible, donc si quelqu'un change d'avis ou n'arrive pas à comprendre quelque chose, nous pouvons simplement revenir à l'utilisation du javascript produit par coffeescript - et continuer à coder.
Nous utilisons coffeescript pour tous du javascript dans BusyConf . Une grande partie de BusyConf est une application côté client qui fonctionne 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 la méthode Qunit (qui est écrit en javascript). Nous avons également écrit une extension au 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 la fonction Sencha Touch (qui est écrit en javascript).
La conclusion est que vous pouvez librement mélanger les dépendances javascript dans votre application, mais tout le code que vous écrivez (le code de votre application, les tests, etc.) peut (et devrait !) être coffeescript.
Près d'un an plus tard, il convient de faire le point sur la situation :
- Ruby on Rails 3.1 intègre le support officiel de CoffeeScript, ce qui signifie qu'il va être beaucoup plus utilisé dans le monde réel. J'ai donné une conférence à la RailsConf le mois dernier, où la plupart des participants n'avaient jamais entendu parler de CoffeeScript auparavant et, compte tenu de la forte approbation de dhh, étaient impatients de s'y mettre.
- Il existe un livre sur CoffeeScript, actuellement en eBook et bientôt en version imprimée, publié par The Pragmatic Bookshelf. Il s'intitule CoffeeScript : Développement JavaScript accéléré et c'est votre serviteur qui en est l'auteur. Il est basé sur CoffeeScript 1.1.1.
- Le langage a en fait très peu évolué au cours des six mois qui se sont écoulés entre la version 1.0 et la version 1.1.1 ; la quasi-totalité des modifications sont des "corrections de bogues". J'ai dû apporter très peu de modifications au code du livre pour la transition de la version 1.0.1 à la version 1.1.1. Cependant, je suis certain que le langage connaîtra des changements plus importants à l'avenir.
La liste la plus complète des projets CoffeeScript se trouve sur le wiki CoffeeScript, à l'adresse suivante Dans la nature page.
Je dirais que la majeure partie de l'utilisation de CoffeeScript en production se fait jusqu'à présent en conjonction avec Appcelerator pour créer des applications iPhone/Android. (Wynn Netherland de The Changelog a décrit mon livre en disant que CoffeeScript était "mon arme secrète pour le développement mobile iOS, Android et WebOS"), mais il y aura beaucoup plus d'utilisation dans les applications Rails de production et, je l'espère, ailleurs, dans les mois à venir.
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
J'aime beaucoup Coffeescript en ce moment. Essentiellement l'ensemble de la HotelTonight L'application iPhone est écrite dans ce langage (en utilisant Appcelerator Titanium, qui 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 parce qu'il rend l'organisation et la maintenance d'une grande quantité de JS beaucoup plus facile. Je trouve également qu'il est beaucoup plus agréable d'écrire du code avec Coffeescript (plutôt qu'avec JavaScript). Nous utilisons également Coffeescript pour le code JS dans notre application Rails, mais il s'agit d'une quantité de code incroyablement mineure/petite par rapport à l'ensemble de l'application téléphonique.
Les avantages sont principalement liés à une syntaxe plus agréable, mais aussi au fait qu'elle standardise un mécanisme OO, et qu'elle y ajoute des éléments intéressants (compréhensions de listes, certains aspects de la portée, etc.)
Les inconvénients sont quasiment 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 faire correspondre à 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 à l'utiliser sur une application de production, alors ne vous laissez pas décourager. Alors, essayez-le. Ecrivez du code avec, comparez le à ce que vous écririez en JS, regardez le code généré pour voir si vous êtes à l'aise avec le fait de pouvoir le lire pour des besoins de débogage. De plus, traînez sur l'IRC #coffeescript, les gens y sont bien. Et enfin, voyez comment cela s'intègre à votre application, par exemple quel est votre processus de construction (par exemple, pour Rails, essayez Barista, pour quelque chose d'autonome, utilisez simplement le "coffee -w" inclus, etc.)