Czy ktoś używał Coffeescript do aplikacji produkcyjnej? [zamknięte]

Coffeescript wygląda całkiem fajnie. Czy ktoś go używał? Jakie są jego zalety i wady?

Author: Yi Jiang, 2010-06-02

7 answers

Zaczęliśmy używać CoffeeScript w naszym produkcie-niepublicznej stronie internetowej, która jest w zasadzie aplikacją do przeglądania niektórych rodzajów danych. Używamy CoffeeScript jako kompilatora wiersza poleceń (nie na serwerze, co w końcu chcielibyśmy zrobić).

PLUSY (dla nas):

  • pozbywa się zbędnego bałaganu w javascript (np. klamry, średniki, niektóre nawiasy) do tego stopnia, że kod jest czystszy i łatwiejszy do zrozumienia na pierwszy rzut oka niż javascript
  • 20-30% mniej linii kodu niż javascript (aby zrobić dokładnie to samo)
  • CoffeeScript nie tylko usuwa szum, ale dodaje słowa kluczowe, klasy i funkcje, takie jak heredocs, aby kodowanie było czystsze i nieco przyjemniejsze]}
  • biorąc pod uwagę poprzednie punkty, bez wątpienia szybsze jest kodowanie w CoffeeScript, gdy nauczysz się podstaw

CONS

  • Podczas używania kompilatora wiersza poleceń: aby debugować, patrzysz na inny kod, gdy rozwiązanie problemu (javascript) tak jak przy pisaniu poprawki (coffeescript). Jednak nieco niewiarygodnie, nasz CoffeeScript jest tak niesamowity, że nigdy nie musieliśmy go debugować!

Ważne, że możemy zawrócić w każdej chwili. Nasz kompilator coffeescript po prostu produkuje czytelny javascript, więc jeśli ktoś zmieni zdanie lub nie może coś wymyślić, możemy po prostu wrócić do korzystania z javascript, który stworzył coffeescript - i dalej kodować.

 112
Author: PandaWood,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-31 02:32:55

Używamy coffeescript dla WSZYSTKICH javascript w BusyConf . Duża część BusyConf jest aplikacją po stronie klienta, która działa w przeglądarkach, w tym obsługuje tryb offline.

Cały nasz kod coffeescript jest w pełni przetestowany. Testy są napisane w coffeescript i używają frameworka Qunit (który jest napisany w javascript). Napisaliśmy również rozszerzenie do frameworka Qunit, które sprawia, że testy są przyjemniejsze. Rozszerzenie Qunit jest napisane w CoffeeScript . Nasza aplikacja ma wersję mobilną, która jest napisana w CoffeeScript, i wykorzystuje framework Sencha Touch (który jest napisany w javascript).

Odejściem od tego jest to, że możesz dowolnie mieszać zależności javascript w swojej aplikacji, ale cały kod, który piszesz (kod aplikacji, testy, itp.) może (i powinien!) be coffeescript.

 27
Author: Jim Garvin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-08 21:29:51

Prawie rok później warto zamieścić kilka aktualizacji:

  1. Ruby on Rails 3.1 zawiera oficjalne wsparcie dla CoffeeScript, co oznacza, że będzie mógł być używany w świecie rzeczywistym. Dałem wykład na RailsConf w zeszłym miesiącu, gdzie większość uczestników nie słyszała wcześniej o CoffeeScript i-biorąc pod uwagę silne poparcie dhh - byli chętni, aby się do niego dostać.
  2. jest książka na CoffeeScript, obecnie w ebooku, a wkrótce w druku z regału Pragmatic. Nazywa się CoffeeScript: przyspieszone tworzenie JavaScript , i jest przez Was naprawdę. Bazuje na CoffeeScript 1.1.1.
  3. język zmienił się bardzo niewiele w ciągu sześciu miesięcy między 1.0 A 1.1.1; prawie wszystkie zmiany kwalifikują się jako "poprawki błędów."Musiałem wprowadzić kilka poprawek do kodu w książce w celu przejścia z 1.0.1 do 1.1.1. Jestem jednak pewien, że w przyszłości język ten ulegnie większym zmianom.

Najbardziej definitywna lista CoffeeScript projekty znajdują się na stronie coffeescript wiki In The Wild.

Powiedziałbym, że większość produkcji wykorzystanie CoffeeScript do tej pory jest w połączeniu z Appcelerator do tworzenia aplikacji iPhone / Android. (Wynn Netherland z Changelog zatarł moją książkę, opisując CoffeeScript jako "moją tajną broń dla iOS, Androida i WebOS mobile development"), ale w nadchodzących miesiącach będzie o wiele więcej zastosowań w aplikacjach produkcyjnych Rails-i, mam nadzieję, gdzie indziej -.

 24
Author: Trevor Burnham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-05 20:08:12

Coffeescript został użyty w czytniku Ars Technica dla iPada http://arstechnica.com/apple/news/2010/11/introducing-the-ars-technica-reader-for-ipad.ars

 12
Author: Drew LeSueur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-04 08:14:23

Naprawdę kocham kawę w dzisiejszych czasach. Zasadniczo cała aplikacja HotelTonight jest w niej napisana (za pomocą Appcelerator Titanium, który pozwala pisać "natywne" aplikacje w JavaScript - nie są to aplikacje webowe, powiedzmy jak Phonegap). Zdecydowałem się w tym przypadku użyć Coffeescript, ponieważ ułatwia to organizowanie i utrzymywanie dużej ilości JS. Uważam również, że pisanie kodu za pomocą Coffeescript (vs.JavaScript) jest po prostu o wiele przyjemniejsze. Używamy również Coffeescript dla JS w naszej aplikacji Rails, ale jest to niewiarygodnie niewielka / niewielka ilość kodu w stosunku do całej aplikacji na telefon.

Plusy mają głównie do czynienia z ładniejszą składnią, ale także z tym, że standaryzuje mechanizm OO, a następnie dodaje kilka ładnych dodatków (składanie list, niektóre rzeczy z zakresu, itp.).

Minusy są dla mnie prawie zerowe. Podstawowym jest to, że jest to dodatkowa warstwa do debugowania. Trzeba będzie spojrzeć na wygenerowany JS (który jest bardzo czytelny i ładny), a następnie zmapuj to do kodu Coffeescript. Dla nas to nie był żaden problem, ale YMMV.

W końcu, moim zdaniem, nie ma żadnego ryzyka w zakresie korzystania z niego w aplikacji produkcyjnej, więc nie pozwól, aby to był bloker. Więc idź go wypróbować. Napisz z nim jakiś kod, porównaj to z tym, co napiszesz w JS, spójrz na wygenerowany kod, aby zobaczyć, czy jesteś wygodny w czytaniu tego dla potrzeb debugowania. No i posiedź na ircu #coffeescript, ludzie są tam dobrzy. I wreszcie, zobacz jak integruje się z Twoją aplikacją, np. jaki jest twój proces "budowania" (np. dla Rails, spróbuj Barista, dla czegoś samodzielnego, po prostu użyj dołączonego "coffee-w", itp.).

 10
Author: chrisrbailey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-18 19:02:06

Coffeescript naprawdę ułatwia pisanie JS. Kończysz z czystszym, bardziej wydajnym kodem.

To powiedziawszy, nadal możesz robić tylko to, co możesz zrobić w vanilla JS. Po użyciu coffeescript wystarczy, to staje się o wiele łatwiejsze do pisania (dobry) JS.

Więc jeśli nie używałeś JS na tonę, proponuję zamiast tego nauczyć się coffescript. Dostaniesz lepszy, czystszy, mniej błędny kod. Jeśli jesteś już naprawdę biegły w JS, może nie być dobrym pomysłem, aby zacząć używać coffeescript na "prawdziwej" aplikacji.

(również coffeescript trochę mnie drażni, ponieważ wydaje się zachęcać do" zalewania " kodu. Nie wiem, czy to dobrze, czy źle, ale wydaje się, że ekstremalny przypadek TMTOWTDI)

 3
Author: Zach,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-02 02:26:37

Zauważ, że chociaż istnieje kompilator, nie można sprawdzać statycznie ze względu na dynamiczną naturę JavaScript. Jak napisano w FAQ:

Analiza Statyczna

CoffeeScript używa prostego kompilatora source-to-source. Brak Typu sprawdzanie jest wykonywane i nie możemy ustalić, czy zmienna w ogóle istnieje albo i nie. Oznacza to, że nie możemy zaimplementować funkcji innych języki mogą być budowane natywnie bez kosztownych kontroli czasu pracy. Jako wynik, każda funkcja, która opiera się na tego rodzaju analiza nie będzie przemyślane.

Obsługa IDE jest mniej dojrzała niż obsługa JavaScript (Cloud9 ma obsługę podświetleń składni, ale Eclipse JSDT ma refaktoringi i wiele innych):https://stackoverflow.com/questions/4084167/ide-or-its-add-in-for-coffescript-programming

 3
Author: thSoft,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:45:36