Книга “Веб-приложения на JavaScript, Маккоу А.” одна из кних мастхев в библиотеке программиста. Поддержка HTML5 и CSS3 с каждым днем становится все качественнее и полнее, но вам необходимо решить, основываясь на вашей клиентской аудитории, где именно можно использовать данные технологии. Ведь создание на языке JavaScript многофункциональных rich-приложений, которые выполняются на стороне клиента, — непростая задача. Это книга поможет вам изучить все приемы, используемые для создания самых современных JavaScript-приложений, в том числе структуры, использование MVC, фреймы, связь с сервером и кросс-доменные запросы, создание приложений реального времени и многое другое.
Чтобы помочь вам понять концепции разработки JavaScript-приложений, рассмотрена работа реальных приложений.
Глава 1
Глава начинается с рассмотрения истории JavaScript и затрагивает основы
языка, оказывающие влияние на текущую реализацию и на круг его пользователей.
Затем дается введение в архитектуру MVC, исследуются имеющиеся
в JavaScript функции-конструкторы, прототипное наследование и способы создания
собственной библиотеки классов.
В главе 2 “Веб-приложения на JavaScript, Маккоу А.”
Здесь речь пойдет об обработке событий в браузерах, включая историю, API
и поведение. Рассматриваются вопросы привязки событий с помощью jQuery,
использования делегирования и создания собственных событий. Также исследуется
использование событий, не имеющих отношения к DOM-модели, с применением
схемы PubSub.
Глава 3
В этой главе приведен порядок использования MVC-моделей в приложении,
а также порядок загрузки удаленных данных и работы с ними. Объясняется
важность MVC и организации пространства имен, а затем создается собственная
ORM-библиотека для работы с данными модели. Затем рассматриваются
способы загрузки удаленных данных и использованием JSONP и кроссдоменной технологии Ajax. И наконец, даются сведения о сохранении данных модели
с помощью локального хранилища HTML5 и их отправке на сервер, отвечающий
требованиям RESTful.
Глава 4
В этой главе показываются способы использования схемы контроллера для сохранения
состояния на стороне клиента. Рассматриваются вопросы использования
модулей для инкапсуляции логики и предотвращения засорения глобального пространства
имен, затем рассматривается вопрос аккуратного связывания контроллеров
с представлениями, прослушивания событий и работы с DOM. И наконец,
рассматриваются вопросы маршрутизации, сначала с использованием фрагмента
URL, начинающегося с символа решетки, а затем с использованием нового API
истории HTML5. Мы стремимся объяснить все «за» и «против» обоих подходов.
Глава 5
Здесь рассматриваются представления и работа с шаблонами с помощью
JavaScript. Рассматриваются разные способы динамического вывода представлений,
а также различные библиотеки работы с шаблонами и места хранения
шаблонов (в составе страниц, в s c rip t-тегах или удаленное хранение с загруз
кой). Затем рассматривается привязка данных — подключение контроллеров
моделей и представления к динамически синхронизируемым данным модели
и данным представления.
В главе 6 “Веб-приложения на JavaScript, Маккоу А.”
В этой главе рассматриваются подробности управления JavaScript-зависимос-
тями с использованием модулей CommonJS. Изучается история и рассуждения,
положенные в основу механизма CommonJS, способы создания CommonJS-
модулей в браузере и различные вспомогательные библиотеки загрузки модулей,
такие как Yabble и RequireJS. Затем рассматриваются способы автоматической
изоляции модулей на стороне сервера, повышения производительности
и экономии времени. И наконец, рассматриваются разные альтернативы
CommonJS, такие как Sprockets и LABjs.
Глава 7
Здесь изучается преимущество, предоставляемое HTML5: API для работы
с файлами. Рассматривается браузерная поддержка, множественная отправка
файлов на сервер, получение файлов, перетаскиваемых в окно браузера, и файлов
от событий клавиатуры. Затем объясняется чтение файлов с использованием
блобов и слайсов (частей) и вывод результатов в браузер. Рассматриваются
вопросы отправки файлов на сервер в фоновом режиме с использованием новой
спецификации XMLHttpRequest Level и, наконец, показывается способ предоставления
пользователям индикатора выполнения операции отправки файла
и способ объединения отправки файлов с имеющимся в j Query Ajax API.
Глава 8
Здесь рассматриваются некоторые весьма увлекательные вопросы разработки
приложений реального времени и технология WebSockets. Сначала в главе
рассматривается довольно бурная история развития технологии реального
времени и ее текущая поддержка в браузерах. Затем изучаются подробности
WebSockets и высокоуровневой реализации этой технологии, браузерной поддержки
и API JavaScript. После этого демонстрируется простой RPC-сервер,
использующий WebSockets для соединения серверов и клиентов. Затем уделяется
внимание Socket. IО и изучается вопрос вписывания технологий реального
времени в архитектуру приложения и в пользовательское восприятие.
Глава 9
В этой главе рассматриваются тестирование и отладка, являющиеся очень
важной частью разработки веб-приложений на JavaScript. Изучаются вопросы,
касающиеся кроссбраузерного тестирования, на каких браузерах следует
проводить тестирование, вопросы блочного тестирования и рассматриваются
библиотеки для тестирования, такие как QUnit и Jasmine. Затем обращается
внимание на автоматизированное тестирование и на постоянно работающие
объединительные сервера, такие как Selenium. Затем осуществляется переход
к вопросам отладки, исследуются веб-инспекторы Firefox и WebKit, консоль
и вопросы использования отладчика JavaScript.
В главе 10 “Веб-приложения на JavaScript, Маккоу А.”
В этой главе рассматривается еще одна важная, но часто недооцениваемая часть
работы с веб-приложением JavaScript: его развертывание. Упор делается главным
образом на производительность и на способы использования кэширования,
минификации, gzip-сжатия и других технологий, сокращающих начальное
время загрузки вашего приложения. В конце главы кратко рассматриваются
вопросы использования сети доставки контента (CDN) для обслуживания статического
содержимого в ваших интересах и вопросы использования встроенного
в браузер механизма аудита, который может быть чрезвычайно полезен
для повышения производительности вашего сайта.
Глава 11
Следующие три главы являются введением в некоторые популярные JavaScript-
библиотеки, предназначенные для разработки приложений. Spine является
весьма небольшой по объему МVC-совместимой библиотекой, использующей
множество концепций, рассмотренных в данной книге. В главе рассматриваются
основные части этой библиотеки: классы, события, модели и контроллеры.
В конце главы создается пример приложения, являющегося диспетчером контактов,
в котором демонстрируется все, изученное в данной главе.
В главе 12 “Веб-приложения на JavaScript, Маккоу А.”
В главе дается полноценное введение в имеющую огромную популярность библиотеку
Backbone, предназначенную для создания JavaScript-приложений.
Рассматриваются основные понятия и классы Backbone, такие как модели,
коллекции, контроллеры и представления. Затем исследуются вопросы синхронизации
данных модели с данными на сервере с помощью RESTful JSON-
запросов и вопросы составления подходящих для Backbone ответов со стороны
сервера. В конце главы создается приложение для ведения списка текущих дел,
в котором демонстрируется работа основной части библиотеки.
Глава 13
В этой главе исследуется библиотека JavaScriptMVC, являющаяся популярной
средой разработки, основанной на использовании библиотеки j Query и применяемой
для создания веб-приложений на JavaScript. Изучаются все основные
компоненты JavaScriptMVC, такие как классы, модели и контроллеры, а также
использование шаблонов на стороне клиента с целью визуализации представлений.
В конце главы дается практический пример списка, реагирующего на CRUD-
операции, который демонстрирует простоту создания абстрактных, многократно
используемых, не засоряющих память виджетов с помощью JavaScriptMVC.
Приложения книги “Веб-приложения на JavaScript, Маккоу А.”
Приложение А
Это приложение предоставляет краткое введение в j Query, которое пригодится,
если вы почувствуете необходимость освежить свое представление об этой
библиотеке. Библиотека j Query используется в большинстве примеров этой книги,
поэтому знакомство с ней играет весьма важную роль. Здесь рассматривается
основная часть API, например обход элементов DOM, работа с DOM, а также
привязка событий, их инициирование и делегирование. Затем более пристально
рассматривается имеющийся в jQuery Ajax API, отправка GET и POST JSON-
запросов. После этого рассматриваются расширения jQuery и порядок использования
инкапсуляции для обеспечения этой библиотекой роли законопослушной
веб-гражданки. В конце приложения рассматривается практический пример:
создание дополнительного модуля jQuery под названием Growl.
Приложение Б
В Приложении Б рассматривается Less, надстройка над CSS, расширяющая
синтаксис каскадных таблиц стилей с помощью переменных, миксинов, операций
и вложенных правил. Less способна существенно сократить объем набираемого
кода CSS, особенно когда дело касается специфических для производителей
браузеров CSSS-правил. В этом приложении рассматриваются
основные улучшения синтаксиса, присущие Less, а также вопросы использования
инструментов командной строки и библиотеки JavaScript для компиляции
Less-файлов в обычный код CSS.
Приложение В
Последнее приложение является справочником по CSS3. В нем предоставляются
основы CSS3, объясняются префиксы производителей браузеров, а затем
просматриваются основные добавления к спецификации. Среди других
свойств CSS3 в этом приложении рассматриваются скругленные углы, rgba-
цвета, отбрасываемые тени, градиенты, переходы и преобразования. В конце
приложения рассматривается так называемая постепенная деградация с использованием
библиотеки Modernizr и практический пример использования
новой спецификации box-sizing.
Также рекомендую Сила JavaScript, Дэвид Херман