Хтось використовував Coffeescript для виробничої програми? [зачинено]


94

Coffeescript виглядає досить круто. Хтось ним користувався? Які його плюси та мінуси?


Відповіді:


113

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

Плюси (для нас):

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

КОНС

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

Що важливо, ми можемо повернутися назад у будь-який час. Наш компілятор coffeescript просто створює читабельний JavaScript, тому якщо хтось передумає або не може щось зрозуміти, то ми можемо просто перейти до використання JavaScript, який створюється coffeescript - і продовжувати кодування.


1
PandaWood потрапляє прямо на всі пункти. Я використовую його у виробництві для всіх своїх клієнтів цього року з великим успіхом. Ми використовуємо Buildr як компілятор, оскільки він підтримує поєднання файлів coffeescript і javascript в одне. github.com/balupton/buildr.npm
balupton

13
"наш CoffeeScript настільки приголомшливий, що нам ніколи не потрібно було налагоджувати його!" Е ... справді? Ваші дані завжди відповідають вашим очікуванням? У вас ніколи не було несподіваного this, або ви надсилали неправильний тип функції? Я не думаю, що ти ще нічого цікавого не робив, якщо тобі нічого не довелося «налагоджувати».
Райан Флоренція

8
@rpflo, якщо ви помітите слова "Ми почали використовувати Coffeescript ..." і збігатимуться з цим образливим твердженням, і приймати його в легкодушному контексті, в якому воно подається - я думаю, хтось міг би погодитися , що причин для занепокоєння мало. Цілком ймовірно, що з наведеного мною тексту ми просто перетворили вже працюючий javascript на coffeescript, отже, серйозних налагоджень поки не потрібно
PandaWood

3
Про Con ', тепер із Source-Maps це вже не проблема, просто скомпілюйте, -mі все добре.
Омеїд

@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 Це називається CoffeeScript: прискорена розробка JavaScript , і це по-вашому справді. Він заснований на CoffeeScript 1.1.1.
  3. Мова фактично змінилася дуже мало за шість місяців між 1,0 та 1,1,1; майже всі зміни кваліфікуються як "виправлення". Мені довелося зробити дуже мало налаштувань коду в книзі для переходу з 1.0.1 на 1.1.1. Однак я впевнений, що мова в майбутньому побачить більш суттєві зміни.

Найбільш остаточний список проектів CoffeeScript знаходиться на вікі-програмі CoffeeScript In the Wild .

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



10

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

Плюси здебільшого пов’язані з просто приємнішим синтаксисом, а також у тому, що він стандартизує механізм ОО, а потім додає кілька приємних доповнень (розуміння списку, деякі обсяги тощо).

Мінуси для мене майже нульові. Первинним є те, що це додатковий шар для налагодження. Вам потрібно буде подивитися на створений JS (який ДУЖЕ читається і приємний), а потім зіставити його з вашим кодом Coffeescript. Для нас це взагалі не було проблемою, але YMMV.

Зрештою, на мою думку, існує нульовий ризик з точки зору використання його у виробничому додатку, тому не дозволяйте це блокувати. Потім спробуйте спробувати. Напишіть з ним якийсь код, порівняйте його з тим, що ви б написали в JS, подивіться на згенерований код, щоб побачити, чи вам зручно читати це для потреб налагодження. Крім того, тусуйтесь у #coffeescript IRC, люди там хороші. І нарешті, подивіться, як він інтегруватиметься у ваш додаток, наприклад, який ваш процес "побудови" (наприклад, для Rails, спробуйте Barista, для чогось самостійного, просто використовуйте включений "кава -w" тощо).


3

Coffeescript насправді просто полегшує написання JS. Ви закінчуєте більш чистий, більш ефективний код.

Як сказано, ви все ще можете робити тільки все, що можете зробити у ванільній JS. Коли ви достатньо використовуєте кофеескрипт, це стає набагато простіше написати (хороший) JS.

Тож якщо ви ще не використовували JS тонну, я б запропонував навчитись кофрискрипту. Ви отримаєте кращий, чистіший, менше баггі-код. Якщо ви вже справді вільно володієте JS, можливо, не буде гарною ідеєю почати використовувати coffeescript у "справжньому" додатку.

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


25
Я не погоджуюсь з рекомендацією вивчати кофеескрипт замість javascript, а також ідею, що колись вільно вивчаю / використовую JavaScript, не є цінною. Розуміння javascript є основним для веб-розробників. Розуміння javascript, який створюватиме ваш код coffeescript, є необхідним. Для тих, хто вже є майстрами javascript, coffeescript буде магічним та революційним пристроєм, ер, інструментом.
Джим Гарвін

3
@ Джим Гарвін, погодився. Важливо, щоб люди вивчали їх javascript, я б також сказав, що, можливо, вивчити кавовий скрипт до javascript у будь-якому випадку буде неможливо, оскільки всі ресурси для початківців будуть написані в старомодному js (якщо Рік Олсен раптом не вирішить почати розміщувати деякі початок навчальних посібників JS у своєму блозі).
Даніель Мендель

2
Вам також потрібно зрозуміти Javascript, щоб написати Coffeescript. Так що ви можете налагодити код, коли щось піде не так.
Блез

Оновлення: CoffeeScript тепер має достатньо пристойних документів, а вихідні карти роблять налагодження JS-коду непотрібним. JavaScript - це ціль лише сьогодні. Навчання JS все ще дуже корисно, але новачок може навчитися достатньо CoffeeScript, не знаючи жодного JavaScript, щоб почати кодування.
Карл Сміт

3

Зауважте, що хоча є компілятор, ви не отримуєте статичну перевірку через динамічний характер JavaScript. Як написано в FAQ:

Статичний аналіз

CoffeeScript використовує прямий компілятор від джерела до джерела. Перевірка типу не проводиться, і ми не можемо визначити, чи існує якась змінна чи ні. Це означає, що ми не можемо реалізувати функції, які інші мови можуть вбудувати рідно, без дорогих перевірок виконання. Як результат, будь-яка особливість, яка спирається на такий аналіз, не буде розглянута.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.