Coffeescript sieht ziemlich cool aus. Hat es jemand benutzt? Was sind die Vor- und Nachteile?
Coffeescript sieht ziemlich cool aus. Hat es jemand benutzt? Was sind die Vor- und Nachteile?
Antworten:
Wir haben begonnen, CoffeeScript in unserem Produkt zu verwenden - einer nicht öffentlich zugänglichen Website, die im Grunde eine App zum Durchsuchen bestimmter Arten von Daten ist. Wir verwenden CoffeeScript als Befehlszeilen-Compiler (nicht auf dem Server, was wir eventuell tun möchten).
Wichtig ist, dass wir jederzeit zurückkehren können. Unser Coffeescript-Compiler produziert nur lesbares Javascript. Wenn also jemand seine Meinung ändert oder etwas nicht herausfinden kann, können wir einfach wieder das von Coffeescript produzierte Javascript verwenden - und weiterhin codieren.
this
oder haben den falschen Typ an eine Funktion gesendet? Ich glaube, Sie haben noch nichts Interessantes getan, wenn Sie nichts "debuggen" mussten.
-m
und du bist gut.
Wir verwenden Coffeescript für das gesamte Javascript in BusyConf . Ein großer Teil von BusyConf ist eine clientseitige Anwendung, die in Browers ausgeführt wird, einschließlich der Unterstützung des Offline-Modus.
Unser gesamter Coffeescript-Code ist vollständig getestet. Die Tests selbst sind in Coffeescript geschrieben und verwenden das Qunit- Framework (das in Javascript geschrieben ist). Wir haben auch eine Erweiterung des Qunit-Frameworks geschrieben, die die Tests schöner macht. Die Qunit-Erweiterung ist in CoffeeScript geschrieben . Unsere Anwendung verfügt über eine mobile Version, die in CoffeeScript geschrieben ist, und verwendet das Sencha Touch- Framework (das in Javascript geschrieben ist).
Das Ergebnis ist, dass Sie Javascript-Abhängigkeiten in Ihrer Anwendung frei mischen können, aber der gesamte Code, den Sie schreiben (Ihr Anwendungscode, Tests usw.), kann (und sollte!) Coffeescript sein.
Fast ein Jahr später lohnt es sich, einige Updates zu veröffentlichen:
Die definitivste Liste der CoffeeScript-Projekte finden Sie auf der Seite In the Wild des CoffeeScript-Wikis .
Ich würde sagen, dass der Großteil der bisherigen Produktion von CoffeeScript in Verbindung mit Appcelerator zur Erstellung von iPhone / Android-Apps erfolgt. (Wynn Netherland von The Changelog verwischte mein Buch, indem er CoffeeScript als "meine Geheimwaffe für die mobile Entwicklung von iOS, Android und WebOS" beschrieb), aber es wird viel mehr Verwendung in Produktions-Rails-Apps geben - und ich hoffe, anderswo - in den kommenden Monaten.
Coffeescript wurde im Ars Technica Reader für iPad http://arstechnica.com/apple/news/2010/11/introducing-the-ars-technica-reader-for-ipad.ars verwendet
Ich liebe Coffeescript heutzutage wirklich. Im Wesentlichen ist die gesamte HotelTonight iPhone-Anwendung darin geschrieben (mit Appcelerator Titanium, mit dem Sie "native" Apps in JavaScript schreiben können - es handelt sich nicht um Web-Apps, beispielsweise wie Phonegap). Ich habe mich in diesem Fall für Coffeescript entschieden, da dies das Organisieren und Verwalten einer großen Menge von JS erheblich vereinfacht. Ich finde es auch viel angenehmer, Code mit Coffeescript (vs. JavaScript) zu schreiben. Wir verwenden auch Coffeescript für das JS in unserer Rails-App, aber dies ist eine unglaublich geringe Menge an Code in Bezug auf die gesamte Telefon-App.
Die Profis haben meistens damit zu tun, nur eine schönere Syntax zu sein, aber auch, dass sie einen OO-Mechanismus standardisiert und dann einige nette Ergänzungen hinzufügt (Listenverständnis, einige Umfangssachen usw.).
Die Nachteile sind für mich fast Null. Das wichtigste ist, dass es eine zusätzliche Ebene zum Debuggen ist. Sie müssen sich das generierte JS ansehen (das SEHR lesbar und nett ist) und es dann Ihrem Coffeescript-Code zuordnen. Für uns war dies überhaupt kein Problem, aber YMMV.
Letztendlich ist es meiner Meinung nach kein Risiko, es in einer Produktions-App zu verwenden. Lassen Sie sich also nicht blockieren. Dann probieren Sie es aus. Schreiben Sie einen Code damit, vergleichen Sie diesen mit dem, was Sie in JS schreiben würden, und sehen Sie sich den generierten Code an, um festzustellen, ob Sie damit vertraut sind, diesen Code für Debugging-Anforderungen lesen zu können. Hängen Sie auch im #coffeescript IRC ab, die Leute sind dort gut. Und schließlich sehen Sie, wie es sich in Ihre App integrieren lässt, z. B. was Ihr "Build" -Prozess ist (z. B. für Rails, versuchen Sie Barista, für etwas Eigenständiges, verwenden Sie einfach das mitgelieferte "Kaffee-W" usw.).
Coffeescript erleichtert das Schreiben von JS wirklich nur. Sie erhalten saubereren und effizienteren Code.
Davon abgesehen können Sie immer noch nur das tun, was Sie in Vanilla JS tun können. Sobald Sie genug Coffeescript verwenden, wird es viel einfacher, (gutes) JS zu schreiben.
Wenn Sie JS nicht tonnenweise verwendet haben, würde ich vorschlagen, stattdessen Coffescript zu lernen. Sie erhalten besseren, saubereren und weniger fehlerhaften Code. Wenn Sie JS bereits fließend beherrschen, ist es möglicherweise keine gute Idee, Coffeescript in einer "echten" App zu verwenden.
(Außerdem ärgert mich Coffeescript ein wenig, da es eher "floofy" Code zu fördern scheint. Ich weiß nicht, ob es eine gute oder eine schlechte Sache ist, aber es scheint ein extremer Fall von TMTOWTDI zu sein.)
Beachten Sie, dass Sie, obwohl es einen Compiler gibt, aufgrund der Dynamik von JavaScript keine statische Überprüfung erhalten. Wie in den FAQ geschrieben:
Statische Analyse
CoffeeScript verwendet einen direkten Source-to-Source-Compiler. Es wird keine Typprüfung durchgeführt, und wir können nicht herausfinden, ob überhaupt eine Variable vorhanden ist oder nicht. Dies bedeutet, dass wir keine Funktionen implementieren können, die andere Sprachen ohne kostspielige Laufzeitprüfungen nativ einbauen können. Infolgedessen wird jede Funktion, die auf dieser Art von Analyse beruht, nicht berücksichtigt.
Die IDE-Unterstützung ist weniger ausgereift als die von JavaScript (Cloud9 unterstützt Syntax-Highlights, Eclipse JSDT bietet jedoch Refactorings und mehr): /programming/4084167/ide-or-its-add-in-for-coffescript -Programmierung