Coffeescript a l' air plutôt cool. Quelqu'un l'a-t-il utilisé? Quels sont ses avantages et ses inconvénients?
Coffeescript a l' air plutôt cool. Quelqu'un l'a-t-il utilisé? Quels sont ses avantages et ses inconvénients?
Réponses:
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).
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.
this
ou 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".
-m
et vous êtes bon.
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.
Près d'un an plus tard, cela vaut la peine de publier quelques mises à jour:
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.
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'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.).
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)
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