Благодарности 		9		
	Вступление 		10		
	О Node.js 		10		
	0б этой книге 		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		
	Сервер НПР, и не только 		95		
	Создаем ТСР-сервер 		95		
	UDP - тоже полезный протокол 		104		
	Переходим на прикладной уровень - реализация НТТР 		106		
	IncomingMessage - входящий НТТР-запрос 		107		
	Server Response		108		
	НТТР-клиент (грабим Центробанк) 		110		
	НТТРS - шифруемся 		14		
	Запускаем НТТРS-сероср 		115		
	И секретный клиент		115		
	WebSockets - стандарт современного веба 		118		
	Браузер- веб-сервер. Надо что-то менять 		118		
	WebSockets - окончательное решение?		120		
	Простой способ - модуль ws 		121		
	Начинаем работу с ws 		121		
	Реализация WebSocket-чaтa 		123		
	Обмен бинарными данными 		127		
	Sockct.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		
	Жив11тельный водопад (async.waterfall) 		161		
	Node.js и данные. Базы данных .		165		
	MySQL и Node.js 		166		
	Четыре буквы - CRUD 		167		
	Preparing Queries 		168		
	Чтение, обновление и удаление данных 		169		
	Работа с пулом соединений 		171		
	ОRМ-система 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для Node.js 		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		
	Синтаксис ЕJS-шаблонов 		233		
	Помощники (Helpers) 		233		
	EJS и Node.js 		234		
	Фильтры 		237		
	Jade - нечто нефритовое 		239		
	Начинаем работу cjade 		240		
	Include - собираем шаблон по частям 		247		
	Примеси 		248		
	СSS-препроцессоры - решение проблем стиля 		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		
	Разработка RЕSТFul-приложения на основе Express 		2 93		
	Немного о RЕSТ-архитектуре 		293		
	Приступаем к реализации RESTFul API 		294		
	Подключаем источник данных 		299		
	А теперь - на три буквы (на MVC) 		306		
	Немного об архитектуре MVC 		306		
	Структурируем код 		307		
	Добавляем новую сущность 		313		
	Практика разработки приложений Node.js		316		
	Nodemon - друr разработчика		316		
	Отладка Nоdе.js-приложений (dеЬug-режим)		320		
	Node Inspector - отладка на стороне клиента 		324		
	Тестирование Nоdе.js-приnожений 		325		
	Что такое Unit-тестирование?		325		
	TDD/BDD 		325		
	Accert - утвердительный модуль 		326		
	Should - BDD-style тестовый фреймворк		330		
	Цепочки утверждений 		330		
	Chai - ВDD/ТDD-библиотека утверждений 		335		
	Chai ТDD-стиль 		335		
	Chai BDD 		335		
	Mocha - JavaScript тест-фреймворк 		336		
	Начинаем работать с Mocha 		337		
	Exports 		340		
	QUnit 		341		
	Асинхронный код		341		
	Jasmine - ароматный ВDD-фреймворк 		342		
	Основы работы c 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 – типa javascript от Microsoft 		372		
	Node.js как ТуреSсriрt-компилятор 		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 bосk! 		403		
	Arrow function 		404		
	Обещания 		406		
	Proxy - займемся метапрограммирование  нa javaScript 		407		
	Ко11станты 		409		
	Генераторы 		409		
	Заключение - что дальше? 		412		
	Приложение - полезные ресурсы по платформе Node.js		 41 З		
	Список литературы		414		
	Предметный указатель 		415