Веб разработчики
знают, что такое CoffeeScript, а другим
достаточно такого объяснения: это
JavaScript с изрядным количеством синтаксического
сахара. Многие яваскриптовые конструкции
пишутся и, что важнее, читаются легче
на кофескрипт. Кто хочет знать больше
— велкам http://jashkenas.github.io/coffee-script/
Я же хочу
поделиться практическим опытом применения
CoffeeScript, на примере переписывания одного
из модулей одного из проектов. Проект
завязан на dojo, поэтому модуль — суть
модуль dojo, что доставляет (одни только
скобочки типа «)}))» после блока в сотню
строк стоят отдельной песни).
Начну с начала.
Основное рабочее место — MS Windows 2003 (да,
у меня есть планы переползти на один из
юниксов, но пока руки не доходят, не все
сразу). Поэтому мне нужен Node.js такой:
http://nodejs.org/dist/v0.10.24/node-v0.10.24-x86.msi
Собственно,
его и предлагает по умолчанию страница
http://nodejs.org/
Качаю, ставлю
— easy-peasy. При установке выбрал папку
d:\node
Внутри этой
папки запускаю cmd.exe, получаю типа консоль.
В консоли
запускаю установку кофескрипта
npm install -g coffee-script
Тоже не рокет сайенс.
Внутри рабочего
проекта создаю файл build.coffee.cmd с содержимым:
set wd=%~dp0 pushd "%wd%" coffee -w -c -o c:\mapedit\javascript\vs\obj\ c:\mapedit\javascript\vs\
Его задача — запустить вечный цикл, в
котором проверяется состояние файлов
*.coffee в папке c:\mapedit\javascript\vs\ и как только
любой из них изменился, компилять его,
создавая одноименный файл (но с расширением
js) в папке c:\mapedit\javascript\vs\obj\
В качестве
бонуса компиляции получаю проверку
кода на предмет ошибок. Удобно —
сохраняешь файл и тут же в окошке рядом
видно — ОК или облом.
Остается
немного, заменить в коде (другие файлы
проекта) подключение модуля с
require("vs/meapp"], function(meapp) { try {vsapp.log('try vsapp');} catch(ex) {vsapp = new meapp();} vsapp.log(" vsapp ready");
на
require(["vs/obj/meapp"], function(meapp) { try {vsapp.log('try vsapp');} catch(ex) {vsapp = new meapp();} vsapp.log(" vsapp ready");
и переписать файл vs\meapp.js на аналогичный
vs\meapp.coffee
Сейчас вы
увидите, чем конкретно coffeescript код лучше
кода javascript.
Было (vs\meapp.js):
Стало
(vs\meapp.coffee):
А это код JS на
выходе компилятора coffee:
Ниже тройной гист с кодом:
Как видно,
кроме небольшой экономии на количестве
строк, изрядно улучшается читаемость
кода за счет применения Python-подобных
(Python — the best!) методов — использование
отступов вместо скобок (хотя можно
продолжать использовать скобки —
либерализм), расширенного набора
операторов для циклов и условий, и …
читайте http://jashkenas.github.io/coffee-script/
там все очень подробно и понятно
нарисовано.
А я свою задачу
выполнил — показал на примере, как можно
переписать dojo-завязанный код на
CoffeScript.
Мне понравилось.
Осталось
упомянуть про удобство редактирования
кода. Тут все не так радужно.
К сожалению,
плагин для Eclipse, которому положено
ублажать лень разработчика, не рабочий.
От слова «совсем». Может быть, когда-нибудь
он заработает. Для SciTE поддержки
CoffeeScript тоже пока не наблюдается. На
сегодня самый удобный способ (под MS
Windows) редактирования кофескриптов —
это использование Notepad++ с подключенным
https://github.com/blakmatrix/CoffeeScript_notepad_UDL
Подключается
он проще пареной свеклы: меню Language —
Define your language — Import -
https://github.com/blakmatrix/CoffeeScript_notepad_UDL/raw/master/CoffeeScript.xml
закрыть окно,
перезапустить Нотепад++.
Дополнительно:
Комментариев нет:
Отправить комментарий