Предисловие		11		
	Целевая аудитория		12		
	Авторы книги		12		
	Как читать эту книгу		12		
	Использование примеров кода		13		
	Благодарности		13		
	Глава 1. Введение		15		
	Что такое MVC		16		
	Что такое Backbone.js		16		
	В каких случаях необходим MVC-фреймворк на JavaScript		18		
	Чем хороша библиотека Backbone.js		19		
	О чем эта книга		20		
	Глава 2. Ключевые понятия		23		
	Паттерн MVC		23		
	MVC в Smalltalk-80		24		
	MVC во Всемирной паутине		25		
	MVC на клиентской стороне и одностраничные приложения		28		
	MVC на клиентской стороне: стиль Backbone		29		
	Особенности реализации		32		
	Модели		33		
	Представления		34		
	Что нам дает MVC		37		
	Углубленное изучение MVC		37		
	Выводы		38		
	Дополнительная информация		38		
	Коротко о главном		38		
	Библиотека Backbone.js		38		
	Примеры использования		39		
	Глава 3. Основы Backbone		43		
	Подготовительные действия		43		
	Модели		44		
	Инициализация		45		
	Значения по умолчанию		45		
	Считывание и присваивание значений		46		
	Прослушивание изменений модели		48		
	Валидация		50		
	Представления		51		
	Создание новых представлений		52		
	Что такое El		52		
	Коллекции		58		
	Добавление и удаление моделей		58		
	Считывание моделей		59		
	Прослушивание событий		60		
	Перезапись и обновление коллекций		62		
	Вспомогательные функции Underscore		64		
	API цепочек команд		68		
	Сохранение моделей с помощью RESTful API		69		
	Считывание моделей с сервера		69		
	Сохранение моделей на сервер		69		
	Удаление моделей с сервера		70		
	Параметры		71		
	События		71		
	on(), off() и trigger()		72		
	listenTo() и stopListening()		75		
	События и представления		76		
	Маршрутизаторы		77		
	Backbone.history		79		
	API синхронизации библиотеки Backbone		82		
	Переопределение Backbone.sync		83		
	Зависимости		85		
	Выводы		86		
	Глава 4. Упражнение 1: управление задачами — ваше первое приложение на Backbone.js. 		87		
	Статический HTML		88		
	Заголовок и сценарии		88		
	HTML-код приложения		89		
	Шаблоны		90		
	Модель задачи		91		
	Коллекция задач		92		
	Представление приложения		93		
	Представления отдельных задач		98		
	Запуск приложения		100		
	Приложение в действии		101		
	Завершение и удаление задач		103		
	Маршрутизация задач		106		
	Выводы		107		
	Глава 5. Упражнение 2: книжная библиотека — ваше первое RESTful-приложение на Backbone.js		108		
	Подготовительные действия		108		
	Создание модели, коллекции, представлений и объекта приложения		113		
	Создание интерфейса		115		
	Добавление моделей		116		
	Удаление моделей		117		
	Создание сервера базы данных		117		
	Установка Node.js, npm и MongoDB		118		
	Установка модулей узлов		118		
	Создание простого веб-сервера		119		
	Подключение к базе данных		122		
	Взаимодействие с сервером		129		
	Выводы		136		
	Глава 6. Расширения Backbone		137		
	MarionetteJS (Backbone.Marionette)		137		
	Вспомогательный код отображения		139		
	Сокращение вспомогательного кода с помощью класса Marionette.ItemView		141		
	Управление памятью		141		
	Управление регионами		144		
	Приложение для управления задачами на основе Marionette		146		
	TodoMVC.js		146		
	Контроллеры		151		
	CompositeView		151		
	TodoMVC.TodoList.Views.js		152		
	Удобнее ли поддерживать приложения на Marionette		155		
	Marionette и гибкость		156		
	Простая версия, автор — Джеррод Оверсон ( Jarrod Overson)		156		
	RequireJS-версия, автор тот же		156		
	Версия с Marionette-модулями, автор — Дерик Бейли		156		
	Дополнительная информация		157		
	Thorax		157		
	Простейшее приложение		158		
	Встраивание дочерних представлений		158		
	Помощники представлений		159		
	Помощник collection		160		
	Настраиваемые атрибуты HTML-данных		161		
	Ресурсы, посвященные Thorax		163		
	Выводы		164		
	Глава 7. Типичные проблемы и пути их решения		165		
	Работа с вложенными представлениями		165		
	Проблема		165		
	Решение 1		165		
	Решение 2		166		
	Решение 3		167		
	Решение 4		167		
	Управление моделями во вложенных представлениях		169		
	Проблема		169		
	Решение		169		
	Отображение родительского представления из дочернего представления		171		
	Проблема		171		
	Решение		171		
	Удаление иерархий представлений		172		
	Проблема		172		
	Решение		172		
	Отображение иерархий представлений		173		
	Проблема		173		
	Решение		173		
	Работа с вложенными моделями и коллекциями		174		
	Проблема		174		
	Решение		174		
	Улучшенная валидация свойств моделей		175		
	Проблема		175		
	Решение		175		
	Backbone.validateAll		177		
	Backbone.Validation		179		
	Классы для валидации отдельных форм		179		
	Предотвращение конфликтов при использовании нескольких версий Backbone		180		
	Проблема		180		
	Решение		180		
	Создание иерархий моделей и представлений		180		
	Проблема		180		
	Решение		181		
	Вызов переопределенных методов		182		
	Backbone-Super		184		
	Агрегаторы событий и посредники		184		
	Проблема		184		
	Решение		184		
	Агрегатор событий		185		
	Посредник		186		
	Сходства и различия		187		
	Когда и какие отношения использовать		188		
	Совместное использование агрегатора событий и посредника		190		
	Язык паттернов: семантика		191		
	Глава 8. Модульная разработка		192		
	Организация модулей с помощью RequireJS и AMD		193		
	Проблемы поддержки множества файлов сценариев		193		
	Для чего требуется улучшать управление зависимостями		194		
	Асинхронное определение модулей (AMD)		194		
	Создание AMD-модулей с помощью RequireJS		195		
	Начало работы с RequireJS		196		
	Пример совместного использования Require.js и Backbone		199		
	Внешнее хранение шаблонов с помощью библиотеки RequireJS и плагина Text		203		
	Оптимизация Backbone-приложений для рабочей среды с помощью оптимизатора RequireJS		204		
	Заключение		207		
	Глава 9. Упражнение 3: ваше первое модульное приложение на Backbone и RequireJS		209		
	Введение		209		
	Разметка		210		
	Конфигурационные параметры		211		
	Создание модулей из моделей, представлений и коллекций		212		
	Загрузка модулей с использованием маршрутов		217		
	Конфигурация модуля в формате JSON		217		
	Маршрутизатор загрузчика модулей		218		
	Обработка pushState с использованием NodeJS		219		
	Пакеты активов — альтернатива управлению зависимостями		220		
	Глава 10. Пагинация запросов и коллекций Backbone.js		222		
	Backbone.Paginator		223		
	Реальные примеры		224		
	Paginator.requestPager		225		
	Вспомогательные методы		228		
	Paginator.clientPager		229		
	Вспомогательные методы		231		
	Замечания о реализации		234		
	Плагины		235		
	Инициализация		236		
	Стили		237		
	Заключение		239		
	Глава 11. Backbone Boilerplate и Grunt-BBB		240		
	Начало работы		242		
	Создание нового проекта		242		
	index.html		243		
	config.js		244		
	main.js		246		
	app.js		247		
	Создание модулей Backbone Boilerplate		249		
	router.js		251		
	Другие полезные инструменты и проекты		252		
	Yeoman		252		
	Backbone DevTools		254		
	Заключение		254		
	Глава 12. Backbone и jQuery Mobile		256		
	Разработка мобильных приложений с помощью jQuery Mobile		256		
	Принцип прогрессивного улучшения виджетов в jQMobile		257		
	Система навигации jQuery Mobile		258		
	Настройка Backbone-приложения для работы с jQuery Mobile		260		
	Рабочий цикл приложения на основе Backbone и jQueryMobile		263		
	Переход на страницу с фиксированным представлением, наследование класса BasicView		265		
	Управление шаблонами мобильных страниц		265		
	Управление DOM и методом $.mobile.changePage		268		
	Использование сложных методов jQM в Backbone		271		
	Динамическое изменение DOM		271		
	Перехват сообщений jQuery Mobile		273		
	Производительность		274		
	Эффективная поддержка многоплатформенности		275		
	Глава 13. Jasmine		281		
	Разработка через реализацию поведения		281		
	Тестовые наборы, спецификации и агенты		283		
	beforeEach() и afterEach()		287		
	Общая область видимости		289		
	Подготовка к тестированию		290		
	Разработка через тестирование с использованием Backbone		291		
	Модели		291		
	Коллекции		293		
	Представления		295		
	Тестирование представлений		296		
	Упражнение		304		
	Дополнительная литература		304		
	Заключение		304		
	Глава 14. QUnit. 		305		
	Настройка		305		
	Пример HTML-кода с QUnit-совместимой разметкой		305		
	Операторы контроля		308		
	Простой тестовый вариант с использованием функции test		308		
	Сравнение фактического и ожидаемого результата функции		309		
	Структурирование операторов контроля		310		
	Простейшие модули QUnit		310		
	Использование методов setup() и teardown()		310		
	Создание и очистка объектов с помощью методов setup() и teardown()		311		
	Примеры использования операторов контроля		311		
	Фикстуры		313		
	Пример с фикстурами		314		
	Асинхронный код		316		
	Глава 15. SinonJS		318		
	Что такое SinonJS?		318		
	Базовые агенты		319		
	Наблюдение за существующими функциями		319		
	Тестовый интерфейс		319		
	Заглушки и мок-объекты		320		
	Заглушки		321		
	Мок-объекты		322		
	Упражнение		323		
	Модели		323		
	Коллекции		324		
	Представления		325		
	Приложение		326		
	Дополнительные источники информации		327		
	Глава 16. Заключение		328		
	Приложение А. Темы для дальнейшего изучения		331		
	Приложение Б. Источники		351