В прошлые выходные я ходил на конференцию по Java, и было несколько интересных тем. Один из выступавших говорил об Underscore, и все его примеры были написаны на CoffeeScript . Ранее я смотрел на CoffeeScript и возился с ним, но, увидев его в действии, я решил дать ему полный второй взгляд. Если вы работаете с JavaScript в браузере или Nodejs на сервере, то CoffeeScript будет работать для вас независимо, и с ним будет проще работать, чем с простым JavaScript.
Имейте в виду, что вам не нужно использовать CoffeeScript, если вы любите JavaScript, вы можете продолжать использовать его, конечно. Я просто напишу эту статью, чтобы познакомить вас с некоторыми изящными вещами, которые CoffeeScript может предложить. Имейте в виду, что это лишь малая часть того, что вы можете получить, используя CoffeeScript.
Приложения CoffeeScript выполняются как приложения JavaScript. Источник CoffeeScript преобразуется в эквивалентный JavaScript перед выполнением. Так что, в конце концов, вы все еще просто выполняете JavaScript, но полностью используете все, что предлагает CoffeeScript.
Несколько интересных вещей:
- Одна из вещей, которые я узнал, это то, что если вы пришли из мира Python, вы можете просто полюбить CoffeeScript с самого начала, потому что CoffeeScript избавляется от точек с запятой и фигурных скобок. Отступы имеют смысл (например, Python, Jade или HAML).
- Операторы возврата не требуют ключевого слова возврата, поскольку последнее выражение — это то, что возвращается. Вы можете использовать оператор возврата в CoffeeScript, но это редко.
- На конференции я обратил внимание на то, что когда вы создаете новые переменные в CoffeeScript, они определяются в локальной области, это означает, что невозможно случайно назначить переменную в глобальной области (таким образом, ее загрязнение — это не очень хорошая вещь ). Вы должны быть очень явными, чтобы поместить переменную CoffeeScript в глобальную область видимости.
Мне нравится тот факт, что вы можете использовать ключевое слово или вместо || а также ключевое слово и вместо &&.
Простой пример в CoffeeScript:
value1 = true value2 = true if value1 and value2 alert true else alert false
Тот же код, но в JavaScript:
value1 = true; value2 = true; if (value1 && value2) { alert(true); } else { alert(false); }
Я могу создать простую функцию в CoffeeScript, которая принимает один параметр и затем говорит привет:
sayHello = (name) -> alert "Hello #{name}"
sayHello 'Chad'
Тот же код, но в JavaScript:
var sayHello;
sayHello = function(name) {
return alert("Hello " + name);
};
sayHello('Chad');
Примечание. Строки в двойных кавычках допускают интерполированные значения с использованием # {…}, а строки в одинарных кавычках являются литеральными.
Давайте создадим функцию, которая принимает два аргумента, один из которых будет иметь значение по умолчанию. Вот CoffeeScript:
sayHello = (name, greeting = "Hello") ->
alert "#{greeting} #{name}!"
sayHello 'Chad', 'Bonjour'
sayHello 'Chad'
Я вызываю функцию дважды. В первый раз я приведу второй аргумент. В следующий раз, когда я это называю, я оставляю значение по умолчанию Таким образом, в первый раз Bonjour Chad и второй раз — Hello Chad .
Вот приведенный выше пример в JavaScript:
var sayHello;
sayHello = function(name, greeting) {
if (greeting == null) {
greeting = "Hello";
}
alert(greeting + " " + name + "!");
};
sayHello('Chad', 'Bonjour');
sayHello('Chad');
Как насчет того, чтобы попробовать функцию автоматического возврата CoffeeScript:
positiveOrNegative = (value) ->
if value > 0
"Positive"
else
"Negative"
alert positiveOrNegative 123
alert positiveOrNegative -123
Вот JavaScript:
var positiveOrNegative;
positiveOrNegative = function(value) {
if (value > 0) {
return "Positive";
} else {
return "Negative";
}
};
alert(positiveOrNegative(123));
alert(positiveOrNegative(-123));
Продолжая …
Вы можете найти хорошее руководство здесь, а также интересный способ интерактивного тестирования вашего CoffeeScript здесь (нажмите на вкладку Try CoffeeScript ). Интерактивный инструмент создаст соответствующий JavaScript для вас при вводе.
Уже есть пара опубликованных книг:
В этом году появятся новые книги.