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

94

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

Esteban Araya
źródło
Związane z: stackoverflow.com/questions/6245341/ ...
Trevor Burnham

Odpowiedzi:

113

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

PLUSY (dla nas):

  • Pozbywa się wielu niepotrzebnych bałaganu w javascript (np. Nawiasy klamrowe, ś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, niewątpliwie kodowanie w CoffeeScript jest bez wątpienia szybsze, gdy już nauczysz się podstaw

CONS

  • Korzystając z kompilatora wiersza poleceń: do debugowania, podczas rozwiązywania problemu (javascript) patrzysz na inny kod niż podczas pisania poprawki (coffeescript). Jednak, nieco niewiarygodne, nasz CoffeeScript jest tak niesamowity, że nigdy nie musieliśmy go debugować!

Co ważne, w każdej chwili możemy zawrócić. Nasz kompilator coffeescript tworzy po prostu czytelny skrypt javascript, więc jeśli ktoś zmieni zdanie lub nie będzie mógł czegoś zrozumieć, możemy po prostu wrócić do korzystania z javascript, który utworzył coffeescript - i dalej kodować.

PandaWood
źródło
1
PandaWood trafia we wszystkie punkty. Używam go w produkcji dla wszystkich moich klientów w tym roku z wielkim sukcesem. Używamy Buildr jako kompilatora, ponieważ obsługuje on łączenie plików coffeescript i javascript w jeden. github.com/balupton/buildr.npm
balupton
13
„nasz CoffeeScript jest tak niesamowity, że nigdy nie musieliśmy go debugować!” Ech ... naprawdę? Twoje dane zawsze odpowiadają Twoim oczekiwaniom? Nigdy nie miałeś nieoczekiwanego thislub wysłałeś niewłaściwego typu do funkcji? Myślę, że nie zrobiłeś jeszcze nic interesującego, jeśli nie musiałeś niczego debugować.
Ryan Florence
8
@rpflo, jeśli zauważysz słowa „Zaczęliśmy używać Coffeescript ...” i dopasuj to do obraźliwego stwierdzenia i weź to w beztroskim kontekście, w którym zostało podane - myślę, że każdy mógłby się zgodzić , że nie ma powodu do niepokoju. Jest całkiem prawdopodobne, na podstawie podanego przeze mnie tekstu, że po prostu przekonwertowaliśmy już działający javascript na coffeescript, więc nie jest jeszcze wymagane żadne poważne debugowanie
PandaWood
3
O Con ', teraz z mapami źródłowymi to już nie jest problem, po prostu skompiluj z -mi jesteś dobry.
omeid,
@omeid dobra uwaga. Śledziłem to i pomyślnie uzyskałem mapy źródłowe działające w Chrome z coffeescriptem
PandaWood
27

Używamy coffeescript do wszystkich skryptów javascript w BusyConf . Duża część BusyConf to aplikacja 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. Same testy są napisane w coffeescript i wykorzystują framework Qunit (który jest napisany w javascript). Napisaliśmy również rozszerzenie do frameworka Qunit, które sprawia, że ​​testy są przyjemniejsze. Rozszerzenie Qunit zostało napisane w języku CoffeeScript . Nasza aplikacja posiada mobilną wersję napisaną w CoffeeScript i wykorzystuje framework Sencha Touch (napisany w javascript).

Wynika z tego, że możesz swobodnie mieszać zależności javascript w swojej aplikacji, ale cały kod, który piszesz (kod aplikacji, testy itp.) Może (i powinien!) Być Coffeescript.

Jim Garvin
źródło
24

Prawie rok później warto opublikować aktualizacje:

  1. Ruby on Rails 3.1 zawiera oficjalną obsługę CoffeeScript, co oznacza, że ​​będzie można go używać w bardziej realnym świecie. W zeszłym miesiącu wygłosiłem wykład na RailsConf, gdzie większość uczestników nie słyszała wcześniej o CoffeeScript i - biorąc pod uwagę silne poparcie dhh - chętnie się w to włączyli.
  2. Jest książka o CoffeeScript, obecnie w eBooku i wkrótce ukaże się w druku z The Pragmatic Bookshelf. Nazywa się CoffeeScript: Accelerated JavaScript Development i jest naprawdę przez Ciebie. Jest oparty na CoffeeScript 1.1.1.
  3. W rzeczywistości język zmienił się bardzo niewiele w ciągu sześciu miesięcy od 1.0 do 1.1.1; prawie wszystkie zmiany kwalifikują się jako „poprawki błędów”. Musiałem dokonać kilku poprawek w kodzie w książce, aby przejść z 1.0.1 na 1.1.1. Jestem jednak pewien, że w przyszłości nastąpi większe zmiany w języku.

Najbardziej ostateczna lista projektów CoffeeScript znajduje się na stronie In the Wild w wiki CoffeeScript .

Powiedziałbym, że większość dotychczasowego wykorzystania CoffeeScript do produkcji odbywa się w połączeniu z Appceleratorem do tworzenia aplikacji na iPhone'a / Androida. (Wynn Netherland z The Changelog zamieścił w mojej książce notkę, opisując CoffeeScript jako „moją tajną broń do tworzenia aplikacji mobilnych na iOS, Androida i WebOS”), ale będzie dużo więcej zastosowań w produkcyjnych aplikacjach Railsowych - i mam nadzieję, że gdzie indziej - w nadchodzących miesiącach.

Trevor Burnham
źródło
10

Obecnie naprawdę uwielbiam Coffeescript. Zasadniczo cała aplikacja HotelTonight na iPhone'a jest w nim napisana (przy użyciu Appcelerator Titanium, który pozwala pisać „natywne” aplikacje w JavaScript - nie są to aplikacje internetowe, powiedzmy jak Phonegap). W tym przypadku zdecydowałem się użyć Coffeescript, ponieważ znacznie ułatwia to organizowanie i utrzymywanie dużej ilości JS. Uważam też, że pisanie kodu w Coffeescript jest o wiele przyjemniejsze (w porównaniu z JavaScriptem). Używamy również Coffeescript dla JS w naszej aplikacji Rails, ale jest to niewiarygodnie mała / mała ilość kodu w stosunku do całej aplikacji na telefon.

Zalety przeważnie mają do czynienia z byciem ładniejszą składnią, ale także z tym, że standaryzuje mechanizm OO, a następnie dodaje kilka fajnych dodatków (listy składane, niektóre zakresy itp.).

Dla mnie minusy są prawie zerowe. Podstawową jest to, że jest to dodatkowa warstwa do debugowania. Będziesz musiał spojrzeć na wygenerowany JS (który jest BARDZO czytelny i ładny), a następnie zmapować go na swój kod Coffeescript. Dla nas to wcale nie był problem, ale YMMV.

Ostatecznie, moim zdaniem, nie ma żadnego ryzyka, jeśli chodzi o używanie go w aplikacji produkcyjnej, więc nie pozwól, aby to było blokerem. Następnie spróbuj. Napisz z nim jakiś kod, porównaj to z tym, co napiszesz w JS, spójrz na wygenerowany kod, aby zobaczyć, czy jesteś w stanie czytać go na potrzeby debugowania. Spędzaj czas w IRC #coffeescript, ludzie są tam dobrzy. I na koniec zobacz, jak zintegrowałby się z twoją aplikacją, np. Jaki jest twój proces „budowania” (np. Dla Railsów, wypróbuj Baristę, dla czegoś samodzielnego, po prostu użyj dołączonego „coffee -w” itp.).

chrisrbailey
źródło
3

Coffeescript naprawdę po prostu ułatwia pisanie JS. Otrzymujesz czystszy i wydajniejszy kod.

Biorąc to pod uwagę, nadal możesz robić tylko to, co możesz zrobić w waniliowym JS. Kiedy użyjesz wystarczająco coffeescript, pisanie (dobrego) JS stanie się o wiele łatwiejsze.

Więc jeśli nie korzystałeś zbyt wiele z JS, sugerowałbym zamiast tego naukę Coffescript. Otrzymasz lepszy, czystszy i 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 w „prawdziwej” aplikacji.

(Co więcej, coffeescript trochę mnie irytuje, ponieważ wydaje się zachęcać do raczej „paskudnego” kodu. Nie wiem, czy to dobrze, czy źle, ale wydaje się, że jest to skrajny przypadek TMTOWTDI)

Zach
źródło
25
Nie zgadzam się z zaleceniem, aby uczyć się coffeescript zamiast javascript, a także z pomysłem, że kiedyś biegła nauka języka javascript / używanie coffeescript nie jest wartościowa. Zrozumienie javascript jest podstawą dla twórców stron internetowych. Zrozumienie kodu javascript, który wygeneruje kod coffeescript, jest konieczne. Dla tych, którzy już są mistrzami javascript, coffeescript będzie magicznym i rewolucyjnym urządzeniem, hm, narzędziem.
Jim Garvin
3
@Jim Garvin, zgodził się. Ważne jest, aby ludzie nauczyli się javascript, powiedziałbym również, że prawdopodobnie i tak nie byłoby możliwe nauczenie się coffeescript przed javascriptem, ponieważ wszystkie zasoby dla początkującego będą napisane w dobrym, staromodnym js (chyba że Rick Olsen nagle zdecyduje się zacząć publikować niektóre rozpoczęcie tutoriali JS na swoim blogu).
Daniel Mendel,
2
Aby napisać Coffeescript, musisz również rozumieć JavaScript. Abyś mógł debugować swój kod, gdy coś pójdzie nie tak.
Blaise,
Aktualizacja: CoffeeScript ma teraz wystarczająco przyzwoitą dokumentację, a mapy źródłowe sprawiają, że debugowanie kodu JS jest niepotrzebne. JavaScript jest obecnie tylko celem. Nauka JS jest nadal bardzo przydatna, ale początkujący może nauczyć się wystarczająco dużo CoffeeScript, nie znając żadnego JavaScript, aby rozpocząć kodowanie.
Carl Smith
3

Zauważ, że chociaż istnieje kompilator, nie otrzymujesz statycznego sprawdzania ze względu na dynamiczną naturę JavaScript. Jak napisano w FAQ:

Analiza statyczna

CoffeeScript używa prostego kompilatora typu source-to-source. Nie jest wykonywane żadne sprawdzanie typów i nie możemy ustalić, czy zmienna w ogóle istnieje, czy nie. Oznacza to, że nie możemy implementować funkcji, które inne języki mogą wbudować w sposób natywny bez kosztownych kontroli środowiska wykonawczego. W rezultacie żadna funkcja, która opiera się na tego rodzaju analizie, nie będzie brana pod uwagę.

Obsługa IDE jest mniej dojrzała niż w przypadku JavaScript (Cloud9 obsługuje podświetlanie składni, ale Eclipse JSDT ma refaktoryzacje i nie tylko): /programming/4084167/ide-or-its-add-in-for-coffescript -programowanie

thSoft
źródło