Кто-нибудь использовал Coffeescript для производственного приложения? [закрыто]

94

Coffeescript выглядит довольно круто. Кто-нибудь им пользовался? Каковы его плюсы и минусы?

Эстебан Арая
источник
Связанный: stackoverflow.com/questions/6245341/…
Тревор Бернхэм,

Ответы:

113

Мы начали использовать CoffeeScript в нашем продукте - закрытом веб-сайте, который по сути представляет собой приложение для просмотра определенных видов данных. Мы используем CoffeeScript в качестве компилятора командной строки (не на сервере, что мы в конечном итоге хотели бы сделать).

ЗА (для нас):

  • Это избавляет от большого количества ненужного беспорядка в javascript (например, скобок, точек с запятой, некоторых скобок) в той степени, в которой код чище и легче для понимания с первого взгляда, чем javascript
  • На 20-30% меньше строк кода, чем в javascript (чтобы делать то же самое)
  • CoffeeScript не только удаляет шум, но и добавляет ключевые слова, классы и функции, такие как heredocs, чтобы сделать кодирование более чистым и приятным.
  • Учитывая предыдущие моменты, несомненно, быстрее будет кодировать на CoffeeScript, как только вы изучите основы

МИНУСЫ

  • При использовании компилятора командной строки: для отладки вы смотрите на другой код при решении проблемы (javascript), как и при написании исправления (coffeescript). Однако, как ни странно, наш CoffeeScript настолько хорош, что нам никогда не приходилось его отлаживать!

Что важно, мы можем вернуться в любое время. Наш компилятор coffeescript просто создает читаемый javascript, поэтому, если кто-то передумает или не может что-то понять, мы можем просто вернуться к использованию javascript, созданного coffeescript, и продолжить кодирование.

PandaWood
источник
1
PandaWood работает точно по всем пунктам. В этом году я с большим успехом использую его в продакшене для всех своих клиентов. Мы используем Buildr в качестве компилятора, поскольку он поддерживает объединение файлов coffeescript и javascript в один. github.com/balupton/buildr.npm
balupton
13
"наш CoffeeScript настолько хорош, что нам никогда не приходилось его отлаживать!" Эээ ... правда? Ваши данные всегда соответствуют вашим ожиданиям? У вас никогда не было неожиданностей this, или вы никогда не отправляли функции не того типа? Не думаю, что вы сделали что-то интересное, если вам не пришлось ничего «отлаживать».
Райан Флоренс
8
@rpflo, если вы заметите слова «Мы начали использовать Coffeescript ...» и сопоставите это с оскорбительным заявлением и примете его в беззаботном контексте, в котором оно дано - я думаю, любой может согласиться , что поводов для беспокойства мало.
Судя по
3
Насчет Con ', теперь с Source-Maps, это больше не проблема, просто скомпилируйте, -mи все хорошо.
omeid 07
@omeid хорошее замечание. Я следил за этим и успешно получил исходные карты, работающие в Chrome с помощью coffeescript
PandaWood
27

Мы используем coffeescript для всего javascript в BusyConf . Большая часть BusyConf - это клиентское приложение, работающее в браузерах, включая поддержку автономного режима.

Весь наш код coffeescript полностью протестирован. Сами тесты написаны на coffeescript и используют фреймворк Qunit (который написан на javascript). Мы также написали расширение для фреймворка Qunit, которое делает тесты удобнее. Расширение Qunit написано на CoffeeScript . У нашего приложения есть мобильная версия, написанная на CoffeeScript, и она использует фреймворк Sencha Touch (написанный на javascript).

Вывод из этого состоит в том, что вы можете свободно смешивать зависимости javascript в своем приложении, но весь код, который вы пишете (код вашего приложения, тесты и т. Д.), Может (и должен!) Быть coffeescript.

Джим Гарвин
источник
24

Спустя почти год стоит выложить несколько обновлений:

  1. Ruby on Rails 3.1 включает официальную поддержку CoffeeScript, а это означает, что его можно будет использовать гораздо чаще в реальном мире. Я выступал с докладом на RailsConf в прошлом месяце, где большинство участников раньше не слышали о CoffeeScript и - при сильной поддержке dhh - очень хотели в него войти.
  2. Есть книга о CoffeeScript, которая в настоящее время находится в электронном виде и скоро будет напечатана с The Pragmatic Bookshelf. Он называется CoffeeScript: ускоренная разработка на JavaScript , и ваш покорный слуга. Он основан на CoffeeScript 1.1.1.
  3. На самом деле язык практически не изменился за шесть месяцев с 1.0 до 1.1.1; почти все изменения квалифицируются как «исправления». При переходе с 1.0.1 на 1.1.1 мне пришлось внести очень мало изменений в код книги. Однако я уверен, что в будущем язык претерпит более значительные изменения.

Самый полный список проектов CoffeeScript находится на странице In the Wild вики CoffeeScript .

Я бы сказал, что большая часть производственного использования CoffeeScript до сих пор связана с Appcelerator для создания приложений для iPhone / Android. (Винн Нидерланды из The Changelog анонсировала мою книгу, описав CoffeeScript как «мое секретное оружие для разработки мобильных приложений под iOS, Android и WebOS»), но в производственных приложениях Rails будет гораздо больше использования - и, я надеюсь, в других местах - в ближайшие месяцы.

Тревор Бернхэм
источник
10

Я очень люблю Coffeescript в наши дни. По сути, все приложение HotelTonight для iPhone написано на нем (с использованием Appcelerator Titanium, который позволяет писать «нативные» приложения на JavaScript - они не являются веб-приложениями, например, как Phonegap). В этом случае я решил использовать Coffeescript, потому что он значительно упрощает организацию и поддержку большого количества JS. Я также считаю, что намного приятнее писать код с помощью Coffeescript (а не JavaScript). Мы также используем Coffeescript для JS в нашем приложении Rails, но это невероятно незначительный / небольшой объем кода по отношению ко всему приложению для телефона.

Плюсы в основном связаны не только с более приятным синтаксисом, но и с тем, что он стандартизирует механизм объектно-ориентированного программирования, а затем добавляет некоторые приятные дополнения (понимание списков, некоторые аспекты области и т. Д.).

Минусов для меня практически ноль. Первый из них - это дополнительный уровень для отладки. Вам нужно будет посмотреть на сгенерированный JS (который ОЧЕНЬ читабельный и приятный), а затем сопоставить его с вашим кодом Coffeescript. Для нас это вообще не было проблемой, но YMMV.

В конце концов, я считаю, что нет никакого риска с точки зрения использования его в производственном приложении, поэтому не позволяйте этому быть блокирующим. Тогда иди и попробуй. Напишите с ним какой-нибудь код, сравните его с тем, что вы бы написали на JS, посмотрите на сгенерированный код, чтобы увидеть, удобно ли вам читать его для отладки. Кроме того, тусуйтесь в IRC #coffeescript, там хорошие люди. И, наконец, посмотрите, как он будет интегрироваться с вашим приложением, например, каков ваш процесс «сборки» (например, для Rails попробуйте Barista, для чего-то отдельного просто используйте прилагаемый «coffee -w» и т. Д.).

Крисрбейли
источник
3

Coffeescript действительно упрощает написание JS. В итоге вы получите более чистый и эффективный код.

При этом вы по-прежнему можете делать только то, что можете делать в vanilla JS. Как только вы достаточно используете coffeescript, писать (хороший) JS становится намного проще.

Так что, если вы не использовали JS много, я бы посоветовал вместо этого изучить coffescript. Вы получите лучший, чище, меньше ошибок в коде. Если вы уже действительно свободно владеете JS, возможно, не стоит начинать использовать coffeescript в «реальном» приложении.

(Кроме того, coffeescript меня немного раздражает тем, что он, кажется, поощряет довольно "бестолковый" код. Я не знаю, хорошо это или плохо, но это крайний случай TMTOWTDI)

Зак
источник
25
Я не согласен с рекомендацией изучать coffeescript вместо javascript, а также с идеей, что когда-то свободное владение javascript / использование coffeescript не имеет ценности. Понимание javascript является фундаментальным для веб-разработчиков. Необходимо понимать javascript, который будет генерировать ваш coffeescript-код. Для тех, кто уже является мастером javascript, coffeescript будет волшебным и революционным устройством, э-э ... инструментом.
Джим Гарвин
3
@ Джим Гарвин, согласен. Важно, чтобы люди изучали свой javascript, я бы также сказал, что, вероятно, будет невозможно выучить coffeescript до javascript в любом случае, поскольку все ресурсы для новичка будут написаны на старомодном js (если только Рик Олсен вдруг не решит начать публиковать начало руководств по JS в своем блоге).
Даниэль Мендель
2
Вам также необходимо понимать Javascript, чтобы писать Coffeescript. Чтобы вы могли отлаживать свой код, когда что-то пойдет не так.
Blaise
Обновление: CoffeeScript теперь имеет достаточно приличную документацию, а исходные карты делают отладку JS-кода ненужной. В наши дни JavaScript - это просто цель. Изучение JS по-прежнему очень полезно, но новичок может выучить достаточно CoffeeScript, не зная никакого JavaScript, чтобы начать программировать.
Карл Смит
3

Обратите внимание, что хотя есть компилятор, вы не получаете статическую проверку из-за динамической природы JavaScript. Как написано в FAQ:

Статический анализ

CoffeeScript использует прямой компилятор от исходного кода к исходному. Проверка типов не выполняется, и мы не можем понять, существует ли переменная или нет. Это означает, что мы не можем реализовать функции, которые другие языки могут встроить изначально, без дорогостоящих проверок во время выполнения. В результате никакие функции, основанные на таком анализе, не рассматриваются.

Поддержка IDE менее развита, чем поддержка JavaScript (Cloud9 имеет поддержку подсветки синтаксиса, но Eclipse JSDT имеет рефакторинг и многое другое): /programming/4084167/ide-or-its-add-in-for-coffescript -программирование

thSoft
источник