Вступление 10
ONode.js 10
Об этой книге 10
Предыстория 12
Веб-страница, веб-сервис, веб-приложение 12
Асинхронность как необходимость 12
Решения - Twisted, Tornado и другие 14
Странный язык - JavaScript 16
Волшебные замыкания 17
Что такое замыкание 17
Применение замыканий 19
ООП в JavaScript 21
Явление Node 26
Хватит теории! Начало работы с Node.js 27
Установка Node 27
Веб-сервер из пяти строк 29
Сайт на Node.js 32
Node Core 37
Как все работает? Event loop в Node.js 37
Глобальные объекты (Globals 37
Global 38
Объект Console 38
Require и псевдоглобальные объекты 39
Процессы 40
Свойства и методы объекта Process 40
Метод process.nextTick 42
Процессы ввода/вывода 43
Signal Events 44
Child Process - параллелизм в Node.js 45
Понятие буфера 49
Таймеры 52
События 54
Слушаем 54
Объект EventEmitter 56
Модули 58
Пакетный менеджер npm 59
Создаем собственный модуль 63
А теперь по-взрослому — пишем Си++ Addons 70
Работа с файлами 75
В дебри файловой системы 75
Маленький полезный модуль - Path 81
Бродим по папкам 84
Работа с файлами — вот она, асинхронность 85
Читаем файлы 85
Watching Files 88
Потоки - унифицируем работу с источниками данных 90
ReadStream/WriteStream 90
Веб-сервер на потоках 93
Сервер HTTP, и не только 95
Создаем TCP-сервер 95
UDP - тоже полезный протокол 104
Переходим на прикладной уровень - реализация HTTP 106
IncomingMessage - входящий HTTP-запрос 107
ServerResponse 108
HTTP-клиент (грабим Центробанк 110
HTTPS - шифруемся 114
Запускаем HTTPS-сервер 115
И секретный клиент 115
WebSockets - стандарт современного веба 118
Браузер - веб-сервер. Надо что-то менять 118
WebSockets - окончательное решение? 120
Простой способ - модуль ws 121
Начинаем работу с ws 121
Реализация WebSocket-чата 123
Обмен бинарными данными 127
Socket.io - webSockets для пролетариата 129
Реальное время для всех! 129
Начинаем работать с socket.io 130
Простой чат на socket.io 132
Усложняем 134
Совершенствуем приложение - дополнительные возможности socket.io 136
Пространства имен 140
«Летучие» сообщения 141
Извещения (acknowledgements 142
Конфигурация 142
Пирамиды судьбы — асинхронный поток
выполнения и как с ним бороться 145
Начинаем строить пирамиды 146
Долой анонимность 150
Node.js control-flow 151
Async - берем поток исполнения в свои руки 153
Инструменты async 153
Control Flow средствами async 157
Живительный водопад (async.waterfall 161
Node.js и данные. Базы данных 165
MySQL и Node.js 166
Четыре буквы - CRUD 167
Preparing Queries 168
Чтение, обновление и удаление данных 169
Работа с пулом соединений 171
ORM-система Sequelize 173
Начинаем работать с Sequelize 173
CRUD на Sequelize 176
Связи 179
NoSQL 182
NodeJS и Memcached 183
Основы Memchashed 183
Реализация 184
Создаем приложение 186
MemcacheDB - все-таки DB 190
Redis — очень полезный овощ 192
Redis - что он умеет 192
Основы работы с Redis 193
Модуль Redis для Nodejs 194
Хэши (Hashes 196
Множества (Sets 199
Упорядоченные множества (Sorted Sets 201
Механизм Publish/Subscribe 202
Очередь сообщений с помощью Redis 205
MongoDB: JavaScript - он везде 208
Для чего 209
Основы работы с MongoDB 210
Native MongoDB 214
Рики-тики-тави: Mongoose для MongoDB 219
Основы работы с Mongoose 220
CRUD по-мангустски 221
Сеттеры, геттеры и прочие приятные вещи 224
Переходим на сторону клиента 226
Мыслим шаблонами 227
Mustache - усатый и нелогичный 227
EJS - пришелец из мира RoR 232
Синтаксис EJS-шаблонов 233
Помощники (Helpers) 233
EJS и Node.js 234
Фильтры 237
Jade - нечто нефритовое 239
Начинаем работу с Jade 240
Include - собираем шаблон по частям 247
Примеси 248
CSS-препроцессоры - решение проблем стиля 250
LESS - больше, чем Sass 250
Вложенные блоки 251
Переменные 252
Операции и функции 253
Примеси 255
Расширения 257
Работаем с LESS в Node.js 257
Stylus 260
Возьмем CSS и отсечем лишнее 260
И тут примеси 262
Функции и переменные 263
Stylus и Node.js 267
Поднимаем разработку на новый уровень 270
Чего нам не хватает? 270
Connect - middleware framework для node.js 272
Что такое middleware? (и зачем все это?) 272
Connect на практике 273
Статический сайт одной строчкой (почти) 275
Совершенствуем сайт 275
Пишем свое СПО 278
Еще немного Connect 280
Веб-каркас для node (node.js web-framework-и) 282
Что такое web-framework? 282
Express 283
Начало работы с Express 283
Закат солнца вручную 285
Подключаем шаблонизатор 289
Задействуем статику 291
Подключаем CSS 291
Разработка RESTFul-приложения на основе Express 293
Немного о REST-архитектуре 293
Приступаем к реализации RESTFul API 294
Подключаем источник данных 299
А теперь - на три буквы (на MVC 306
Немного об архитектуре MVC 306
Структурируем код 307
Добавляем новую сущность 313
Практика разработки приложений Node.js 316
Nodemon - друг разработчика 316
Отладка Node.js-приложений (debug-режим 320
Node Inspector - отладка на стороне клиента 324
Тестирование Node.js-приложений 325
Что такое Unit-тестирование? 325
TDD/BDD 325
Accert - утвердительный модуль 326
Should - BDD-style тестовый фреймворк 330
Цепочки утверждений 330
Chai - BDD/TDD-библиотека утверждений 335
Chai TDD-стиль 335
Chai BDD 335
Mocha - JavaScript тест-фреймворк 336
Начинаем работать с Mocha 337
Exports 340
QUnit 341
Асинхронный код 341
Jasmine - ароматный BDD-фреймворк 342
Основы работы с Jasmine 342
Jasmine и асинхронный код 345
Spies - шпионим и эмулируем 346
Grunt - The JavaScript Task Runner 349
Grunt - начало работы 350
Инструменты Grunt 352
Grunt watch - задача-наблюдатель 359
Grunt connect web server 361
Альтернативы JavaScript и Node.js 363
CoffceScript - зависимость с первой чашки 363
Краткий курс по кофе 364
Классы, наследование, полиморфизм, генераторы 367
CoffeScript и Node.js 368
Пишем сервер на CoffeScript 370
TypeScript - типа Javascript от Microsoft 372
Node.js как TypeScript-компилятор 373
Аннотации типов 373
Классы! настоящие классы! 374
Интерфейсы 376
Модули 377
Что еще 378
Dart - дротик в спину JavaScript от Google 378
Экосистема Dart 378
Знакомство с Dart 382
ООП - чтим традиции 383
Область видимости и библиотеки 385
Изоляторы 386
А в общем-то 387
Будущее уже сейчас - ECMAScript.next и Node 388
ECMAScript 5 - уже стандарт 388
Всякие строгости - Strict Mode в JavaScript 388
JSON 390
Массивы 392
Объекты 394
Who’s Next? ECMAScript 6 399
ECMAScript 6 в браузерах и в Node js 400
Вот теперь настоящие классы! 400
Модульная структура 402
Цикл for-of 403
Функции - let it block!..» 403
Arrow function 404
Обещания 406
Proxy - займемся метапрограммированием на JavaScript 407
Константы 409
Генераторы 409
Заключение - что дальше 412
Приложение — полезные ресурсы по платформе Node.js 413
Список литературы 414
Предметный указатель 415
Полезные ресурсы по платформе Node.js
1. Документация по Node.js API на сайте проекта: http://nodejs.org/api/.
2. Nodc.JS от А до Я - серия скринкастов Ияьи Кантора: http://leam. javascript.ru/nodejs-screencast.
3. Node Packaged Modules: https://www.npmjs.org/.
4. Александр Календарев. Создание addon-модулей для Node.js: http:// samagru/archive/nH>re/145.
5. Сайт, посвященный технологии WebSocket: http://www.websocket.org/.
6. The WebSocket Protocol: http://tools.ietf.org/html/rfc64SS.
7. Проект SockeUo: http://socket.io/.
8. Проект async: https://github.com/caolan/async.
9. ORM Sequelize: http://sequelizejs.com/.
10. Mongoose MongoDB ODM: http://mongoosejs.com/.
11. Шаблонизатор Mustache: https://github.com/janl/mustache.js.
12. Embedded JavaScript templates: https://github.com/visionmedia/ejs.
13. Jade - node template engine: http://jade-lang.com.
14. CSS-препроцессор LESS: http://lesscss.org/.
15. Препроцессор Stylus: https://github.com/LearnBoost/$tylu$.
16. Middleware framework Connect: https://github.com/senchalabs/connect.
17. Проект Express: http://expressjs.com/.
18. Проект nodemon: http://nodemon.io/.
19. Отладчик node-inspector https://github.com/node-inspector/node-inspector.
20. Проект Should: https://github.com/shouldjs/should.js.
21. Проект Chai: http://chaijs.com/.
22. Проект Jasmine - Behavior-Driven JavaScript: http://jasmine.github.io/.
23. Проект Grunt - The JavaScript Task Runner http://gruntjs.com/.
24. Проект CoffeeScript: http://coffeescript.org/.
25. Проект TypeScript: http://www.typescriptlang.org/.
26. Проект Dart: https://wwwdartlang.org/.
27. ECMAScript® Language Specification (5.1 Edition): http://www.ecma-intemational.org/ec ma-262/5.1/.
28. Таблица поддержки браузерами элементов ECMAScript6: http://kangax. github.io/compat-table/es6/.
29. ECMAScript Language Specification ECMA-262 6th Edition - DRAFT https://geekli.st/OmShiv/links/18490.
30. Веб семинары и учебные программы: http://nodeschool.io/ru/
Добавить комментарий