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

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

Ответ 1

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

PROS (для нас):

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

CONS

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

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

Ответ 2

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

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

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

Ответ 3

Почти год спустя стоит опубликовать несколько обновлений:

  • Ruby on Rails 3.1 включает официальную поддержку CoffeeScript, что означает, что она увидит гораздо больше возможностей в реальном мире. В прошлом месяце я говорил в RailsConf, где большинство участников не слышали о CoffeeScript до и после сильного одобрения - стремились проникнуть в него.
  • Там книга на CoffeeScript, в настоящее время в eBook и скоро будет напечатана из The Pragmatic Bookshelf. Он называется CoffeeScript: ускоренная разработка JavaScript, и это по-настоящему. Он основан на CoffeeScript 1.1.1.
  • В течение шести месяцев между 1.0 и 1.1.1 язык существенно изменился; почти все изменения квалифицируются как "исправления". Мне пришлось сделать очень мало настроек для кода в книге для перехода от 1.0.1 до 1.1.1. Тем не менее, я уверен, что язык будет видеть более значительные изменения в будущем.

Самый окончательный список проектов CoffeeScript представлен на странице

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

Ответ 5

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

Преимущество в основном связано с просто сильным синтаксисом, но также и тем, что он стандартизирует механизм OO, а затем добавляет некоторые приятные дополнения (понимание списков, некоторые возможности и т.д.).

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

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

Ответ 6

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

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

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

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

Ответ 7

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

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

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

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