10.06.13, 17:55
0 комментарий
  Уроки

Изучаем CoffeeScript – Часть 1

Давайте признаем это, javascript не всегда считался лучшим решением среди разработчиков, и с момента появления CoffeeScript в 2009 году, этот язык стремительно заполонил мир javascript-разработчиков. Это произошло во многом потому, что он превосходит javascript в одном важнейшем аспекте: синтаксисе кода.

Даже несмотря на то, что это сравнительно новый язык, вы быстро научитесь с ним работать, так как он представляет собой переформулированный javascript. Он более приятный и более простой в сравнении с javascript.

При работе с CoffeeScript, не забывайте о том, что вы пишите код, который перед реализацией будет наилучшим образом скомпилирован в javascript-код, который без труда проходит тестирование JSLint, поэтому здесь у вас немного меньше поводов для беспокойства. Полученный в результате код будет представлять собой валидный javascript, с обработкой которого у браузеров не возникнет проблем. CoffeeScript для javascript – все равно, что SASS для CSS, - возможность создавать более простой, но более продуктивный код.

Установка и использование

CoffeeScript представляет собой утилиту node.js, поэтому, для того чтобы установить его, вам потребуется установленный node.js, а также node package manager. Предположив, что вы уже установили эти два пакета, все, что вам остается сделать, это открыть терминал и установить CoffeeScript при помощи package manager, используя данный код:

npm install -g coffee-script


И на данном этапе вы получаете установленный CoffeeScript. Чтобы скомпилировать файл .coffee в javascript-файл, вам нужно вписать:

coffee --compile script.coffee


Он скомпилирует файл script.coffee в script.js в ту же папку, но это произойдет только после того, как вы запустите команду. Если вы хотите, чтобы утилита компилировала каждое внесенное вами изменение в файл coffee, вам нужно будет добавить -watch перед компилированием:

coffee --watch --compile script.coffee


С этим добавлением, ваш javascript будет перекомпилироваться каждый раз, когда вы вносите изменения в файл .coffee.

Переменные

При создании javascript-переменной, нам нужно добавлять приставочный ключ var, в CoffeeScript такая необходимость отпадает, и вы можете просто вписать переменную, и привязать ее к чему-либо. Также стоит взглянуть на то, что CoffeeScript использует множество методов вложения, дабы избежать использования точки с запятой, и для того, чтобы язык понял, что объявление переменной завершено, вам нужно просто перейти на новую строку:

age = 21
country = "Portugal"


В javascript вам бы нужно было написать нечто вроде этого:

var age = 21;
var country = "Portugal";


Это лишь небольшой пример, но уже здесь вы можете видеть, насколько CoffeeScript упрощает работу с кодом.

Операторы сравнения и логические операторы

Помните, сколько времени вы угробили на то, чтобы запомнить операторы в javascript? Помните, как вы удивлялись, почему вам нужно использовать === вместо того, чтобы просто использовать is? Ну что же, CoffeeScript позаботится и об этом. Утилита предлагает вам действительно пригодные к использованию алиасы операторов:

Операторы сравнения

=== теперь превратилось в простое is;
!== было преобразовано в более читабельное isnt.

Логические операторы

Вместо &&, теперь вы можете использовать and;
Что касается ||, теперь вы можете использовать просто or;
Маленький знак восклицания, который отвечал за not, теперь преобразован в более логичное… not.

Объявления if

CoffeeScript также избавит вас от фигурных скобок. Здесь используется специальный метод для указания, когда вы находитесь внутри объявления. If-объявления работают по тому же принципу, как и в javascript, но вам не нужны фигурные или круглые скобки. Просто вводите нужный вам код при включенном объявлении:

if work > 24 and sleep < 8
   vacations()
else 
   work()


и он будет преобразован в javascript следующим образом:

if (work > 24 && sleep < 8) { 
 vacations();  
} else {  
    work();
}


Надеемся, что вы уже сейчас видите преимущества CoffeeScript, несмотря на то, что были представлены лишь простейшие примеры того, насколько опрятным может быть код.

Перебор массивов

Перебор массивов – это то, что вам приходилось делать в любом javascript-приложении, над которым вы работали, и при этом синтаксис для перебора массивов в javascript не такой уж и простой. Нам кажется, что здесь CoffeeScript выступает просто великолепно! Для перебора массивов мы просто используем цикл for..in следующим образом:

tasks = ['Design','Code','Groceries']  
for task in tasks  
 alert task


Все, что совершает этот отрывок кода, это считывает всё из массива, а затем выдает элементы один за другим. Чтобы еще больше упростить процесс, вы можете даже записать цикл for..in в одну строку следующим образом:

tasks = ['Design','Code','Groceries']  
alert task for task in tasks


Такой вариант гораздо легче воспринимается и его легче использовать, нежели то, с чем нам приходилось сталкиваться в javascript. Для этого, в CoffeeScript нам понадобятся эти две строки:

var task, tasks, _i, _len;

tasks = ['Design', 'Code', 'Groceries'];

for (_i = 0, _len = tasks.length; _i < _len; _i++) {
  task = tasks[_i];
  alert(task);
}


Циклы While

Эти циклы также очень удобны при создании javascript-приложений, и разработчики CoffeeScript не ударили в грязь лицом, пытаясь облегчить процесс работы с этими циклами. Например:

while sleep < 8
   sleep()


либо вы можете написать все в одну строку, если хотите:

while sleep < 8 then sleep()


Или:

sleep() until sleep > 8


на чистом коде javascript может быть преобразован в:

//then
while (sleep < 8) {
  sleep();
}


Или:

//until
while (!(sleep > 8)) {
  sleep();
}


Функции

Функции также представляют собой важную часть любого языка программирования, и даже несмотря на то, что функции в javascript не такие уж и запутанные, как другие части, которые упрощает CoffeScript, здесь тоже нашлось то, что можно упростить. Теперь, простая функция, которая берет чье-то имя, а затем выводит его, может быть написана следующим образом:

sayHi = (name) -> 
 return "Hello " + name
alert sayHi('Sara')


Все, что вы делаете, это называете функцию (в данном случае функция называется sayHi), а затем, после знака равенства, вам следует указать параметры. Здесь имя – это единственный параметр, и после того, как наша функция будет определена, нам нужно вписать ->, после чего, на следующей строке, нужно указать предназначение функции, чтобы CoffeeScript понял, что мы находится внутри функции. В данном случае, все что нам нужно сделать, это отпечатать «Hello», а затем имя человека. Мы используем простой alert, чтобы запустить функцию с именем. Мы также можем вписать этой единственную строку, которая исключает ввод и отступы, потому что в ней после -> и так указано, что функция должна делать:

sayHi = (name) -> return "Hello " + name


Этот небольшой отрывок кода будет скомпилирован в следующий код javascript:

var sayHi;

sayHi = function(name) {
  return "Hello " + name;
};

alert(sayHi('Sara'));


Конечно же, это была довольно приятная функция, но как вы видите, она помогла нам сэкономить 3 строки кода и, конечно же, в javascript мы могли просто назвать переменную по мере объявления функции следующим образом:

var sayHi = function(name) {
  return "Hello " + name;
};

alert(sayHi('Sara'));


Приведенные здесь примеры представляют собой то, что способна компилировать утилита CoffeeScript, и несмотря на то, что бывают моменты, которые облегчены еще больше, на выходе вы все равно получите валидный и семантический javascript-код.

В завершение

Это лишь малость из того, что для вас может сделать CoffeeScript. При работе над более сложными задачами, эта утилита в значительной степени облегчит вашу работу в сравнении с javascript: от вас потребуется меньше кода, он получится более понятным и им будет гораздо проще управлять. Даже забросив сайт на год, вернувшись к коду, вы все равно поймете, что там происходит, и что нужно переделывать.

Следите за новостями, так как скоро мы поделимся с вами второй частью данной серии статей. Во второй части мы расскажем вам о том, как комбинировать CoffeeScript с jQuery и LocalStorage для создания простенького приложения со списком контактов.

Используете ли вы CoffeeScript, чтобы облегчить работу с javascript? Какие части CoffeeScript вам нравятся больше, чем в javascript? Пожалуйста, расскажите нам в комментариях.

Напишите своё мнение