УДК 004.738.5:004.45CoffeeScript
ББК 32.973.202-018.2
Б41
Марк Бейтс
Б41 CoffeeScript. Второе дыхание JavaScript: пер. с анг. А. Киселёв.
– М.: ДМК Пресс, 2016. – 310 с.: ил.
ISBN 978-5-97060-240-9
Если вы уже умеете писать на JavaScript, на CoffeeScript
вы сможете делать это лучше. А поскольку программный
код на CoffeeScript «компилируется» в программный код
на JavaScript, он легко впишется практически в любое вебокружение.
В книге автор рассказывает веб-разработчикам,
почему язык CoffeeScript так удобен и как он позволяет избежать
проблем, часто способствующих появлению ошибок в
программном коде на JavaScript и усложняющих его сопровождение.
Он познакомит вас со всеми особенностями и приемами,
которые необходимо знать, чтобы писать качественный
программный код на CoffeeScript, и покажет, как использовать
преимущества еще более надежного набора инструментов,
входящих в состав языка CoffeeScript.
Издание предназначено в первую очередь вебразработчикам,
использующим JavaScript, а также всем тем,
кто хочет писать качественный и понятный код.
УДК 004.738.5:004.45CoffeeScript
ББК 32.973.202-018.2
Все права защищены. Любая часть этой книги не может быть воспроизведена
в какой бы то ни было форме и какими бы то ни было средствами без
письменного разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но, поскольку
вероятность технических ошибок все равно существует, издательство
не может гарантировать абсолютную точность и правильность приводимых
сведений. В связи с этим издательство не несет ответственности за возможные
ошибки, связанные с использованием книги.
ISBN 978-0-321-82010-5 (анг.) Copyright © by Pearson Education, Inc.
ISBN 978-5-97060-240-9 (рус.) © Оформление, издание, ДМК Пресс, 2016
Стр.5
Содержание
Благодарности ................................................. 12
Об авторе ........................................................ 15
Предисловие ................................................... 16
Что такое CoffeeScript? ....................................................... 19
Кому адресована эта книга? ............................................... 21
Как читать эту книгу ............................................................ 22
Структура книги .................................................................. 24
Часть I: Основы CoffeeScript ........................................... 24
Часть II: Практическое применение CoffeeScript ............. 25
Установка CoffeeScript ........................................................ 26
Как запускать примеры ....................................................... 27
Примечания ........................................................................ 27
Часть I. Основы CoffeeScript ............................... 29
1. Введение ..................................................... 30
Интерактивная среда CoffeeScript ...................................... 30
Компиляция в браузере ...................................................... 33
Предостережение ............................................................... 35
Компиляция в командной строке ........................................ 35
Флаг --compile ............................................................... 36
Стр.6
6
Содержание
Интерфейс командной строки CoffeeScript ......................... 36
Флаг --output .................................................................. 38
Флаг --bare..................................................................... 38
Флаг --print .................................................................... 39
Флаг --watch .................................................................. 40
Выполнение файлов CoffeeScript ................................... 41
Прочие флаги ................................................................. 41
В заключение ...................................................................... 41
Примечания ........................................................................ 42
2. Основы ........................................................ 43
Синтаксис ........................................................................... 43
Значимые пробелы ............................................................. 44
Ключевое слово function ..................................................... 46
Круглые скобки ................................................................... 46
Переменные и области видимости...................................... 48
Видимость переменных в JavaScript ............................... 48
Видимость переменных в CoffeeScript............................ 49
Анонимная функция-обертка .......................................... 50
Интерполяция ..................................................................... 54
Интерполяция строк ....................................................... 54
Интерполируемые строки .............................................. 55
Строковые литералы ...................................................... 57
Встроенные документы .................................................. 59
Комментарии ................................................................. 60
Встроенные комментарии .............................................. 61
Блочные комментарии ................................................... 61
Расширенный синтаксис регулярных выражений ................ 62
В заключение ...................................................................... 63
Примечания ........................................................................ 63
Стр.7
Содержание
7
3. Управляющие конструкции ............................ 64
Операторы и псевдонимы ................................................... 64
Арифметические операторы .......................................... 65
Присваивание ................................................................ 66
Сравнение ..................................................................... 69
Строки ........................................................................... 72
Оператор проверки существования ............................... 72
Псевдонимы ................................................................... 75
Псевдонимы is и isnt ....................................................... 76
Псевдоним not ............................................................... 76
Псевдонимы and и or ...................................................... 78
Псевдонимы логических значений ................................. 78
Псевдоним @ ................................................................. 80
Условные инструкции if/unless ............................................ 81
Инструкция if .................................................................. 81
Инструкция if/else .......................................................... 82
Инструкция if/else if ........................................................ 85
Инструкция unless .......................................................... 87
Встроенные условные инструкции ................................. 88
Инструкции switch/when ..................................................... 89
В заключение ...................................................................... 91
Примечания ........................................................................ 92
4. Функции и аргументы ..................................... 93
Основы функций ................................................................. 95
Аргументы .......................................................................... 98
Аргументы со значениями по умолчанию ............................ 99
Групповые аргументы... .................................................... 102
В заключение .................................................................... 106
Примечания ...................................................................... 106
Стр.8
8
Содержание
5. Коллекции и итерации ................................. 107
Массивы ........................................................................... 107
Проверка на вхождение ................................................ 109
Присваивание с перестановкой ................................... 110
Множественное, или реструктурирующее
присваивание .............................................................. 111
Диапазоны ................................................................... 115
Срезы массивов ........................................................... 117
Замена значений в массиве ......................................... 119
Вставка значений ......................................................... 120
Объекты/хеши .................................................................. 121
Получение и изменение атрибутов ............................... 125
Реструктурирующее присваивание .............................. 127
Циклы и итерации ............................................................. 128
Итерации по элементам массивов ............................... 129
Ключевое слово by ....................................................... 130
Ключевое слово when ................................................... 131
Итерации по атрибутам объектов ................................. 132
Ключевое слово by ....................................................... 133
Ключевое слово when ................................................... 133
Ключевое слово own ..................................................... 134
Цикл while ..................................................................... 137
Цикл until ...................................................................... 138
Генераторы .................................................................. 139
Ключевое слово do ....................................................... 142
В заключение .................................................................... 144
Примечания ...................................................................... 145
6. Классы ...................................................... 146
Определение классов ....................................................... 146
Определение функций ...................................................... 147
Функция constructor .......................................................... 148
Область видимости в классах ........................................... 150
Стр.9
Содержание
9
Наследование классов ...................................................... 159
Функции класса ................................................................ 166
Функции прототипа........................................................... 170
Привязка (-> и =>) ............................................................ 171
В заключение .................................................................... 177
Примечания ...................................................................... 178
Часть II: Практическое применение CoffeeScript .... 179
Примечания ...................................................................... 180
7. Инструмент сборки Cake и файлы
сборки Cakefile ............................................... 181
Вступление ....................................................................... 181
Создание заданий для Cake .............................................. 182
Выполнение заданий ........................................................ 183
Использование параметров .............................................. 183
Вызов других заданий ....................................................... 187
В заключение .................................................................... 189
Примечания ...................................................................... 190
8. Тестирование с помощью Jasmine .................. 191
Установка Jasmine ............................................................ 192
Настройка Jasmine ............................................................ 192
Введение в Jasmine .......................................................... 195
Модульное тестирование .................................................. 197
До и после ........................................................................ 201
Собственные методы сопоставления ................................ 207
В заключение .................................................................... 210
Примечания ...................................................................... 212
Стр.10
10
Содержание
9. Введение в Node.js ...................................... 213
Что такое Node.js? ............................................................ 213
Установка Node ................................................................. 214
Введение .......................................................................... 215
Потоковые ответы ............................................................. 218
Создание сервера CoffeeScript ......................................... 220
Опробование сервера ...................................................... 233
В заключение .................................................................... 235
Примечания ...................................................................... 235
10. Пример: список задач, часть 1 (серверная) .... 236
Установка и настройка фреймворка Express ..................... 237
Настройка MongoDB с помощью Mongoose ...................... 242
Создание Todo API ............................................................ 245
Выполнение запросов с помощью Mongoose .................... 247
Извлечение всех задач ................................................. 247
Создание новых задач .................................................. 249
Получение, изменение и удаление задачи .................... 251
Реорганизация контроллера ........................................ 253
В заключение .................................................................... 258
Примечания ...................................................................... 258
11. Пример: список задач, часть 2
(клиент на основе jQuery) ................................. 259
Подготовка HTML с помощью Twitter Bootstrap .................. 259
Организация взаимодействий с помощью jQuery .............. 263
Добавление формы создания новой задачи ...................... 264
Отображение списка задач с помощью
шаблонов Underscore.js ................................................ 267
Вывод списка имеющихся задач ....................................... 271
Стр.11
Содержание
11
Изменение задач .............................................................. 272
Удаление задач ................................................................. 276
В заключение .................................................................... 277
Примечания ...................................................................... 278
12. Пример: список задач, часть 3
(клиент на основе Backbone.js) ......................... 279
Что такое Backbone.js? ..................................................... 279
Подготовка ................................................................... 280
Настройка фреймворка Backbone.js ................................. 281
Создание модели Todo и коллекции ее экземпляров ........ 284
Вывод списка задач с помощью представления ................ 287
Создание новых задач ...................................................... 290
Представление для отображения отдельной задачи ......... 294
Изменение и проверка моделей в представлениях....... 296
Проверка ..................................................................... 298
Удаление моделей из представлений ............................... 299
В заключение .................................................................... 301
Примечания ...................................................................... 302
Предметный указатель .................................... 303
Стр.12