AJAX в действии
Дейв Крейн, Эрик Паскарелло, Даррен Джеймс
В этой книге описан новый подход к созданию Web-приложений, известный как Ajax. Авторы осматривают составные части Ajax: JavaScript, CSS, DOM и объект XMLHttpRequest. Кроме того, в книге нашли отражение вопросы управления кодом, взаимодействия клиента и сервера и применения архитектуры «модель-представление-контроллер« на разных уровнях приложения.
Читатель также найдет сведения о защите и производительности - важных характеристиках, существенно влияющих на популярность любого продукта. Рассматриваемые вопросы иллюстрируются примерами практического использования Ajax. В приложениях содержится дополнительная информация об инструментальных средствах, о языке JavaScript и библиотеках. Материал книги изложен на высоком уровне и будет полезен специалистам высокой и средней квалификации.
Вильямс, 2006.
ISBN 978-5-8459-1034-9, 1-9323-9461-3
Количество страниц: 640.
Содержание книги «AJAX в действии»:
- 31 I. НОВЫЙ ВЗГЛЯД НА WEB-ПРИЛОЖЕНИЕ
- 33 1. Каким должен быть Web-интерфейс
- 34 1.1. Нужны ли богатые клиенты
- 35 1.1.1. Действия пользователя при работе с приложением
- 39 1.1.2. Накладные расходы при работе в сети
- 42 1.1.3. Асинхронное взаимодействие
- 45 1.1.4. Независимый и переходный образы использования
- 47 1.2. Четыре основных принципа Ajax
- 47 1.2.1. Браузер имеет дело с приложением, а не с содержимым
- 49 1.2.2. Сервер доставляет данные, а не содержимое
- 51 1.2.3. Пользователь может непрерывно взаимодействовать с приложением
- 53 1.2.4. Реальное кодирование требует порядка
- 54 1.3. Применение богатых клиентов Ajax
- 54 1.3.1. Системы, созданные с использованием Ajax
- 55 1.3.2. Google Maps
- 58 1.4. Альтернативные технологии
- 58 1.4.1. Macromedia Flash
- 59 1.4.2. Java Web Start
- 59 1.5. Резюме
- 60 1.6. Ресурсы
- 34 1.1. Нужны ли богатые клиенты
- 63 2. Знакомство с Ajax
- 64 2.1. Основные элементы Ajax
- 66 2.2. JavaScript изучался не зря
- 68 2.3. Определение внешнего вида с помощью CSS
- 68 2.3.1. Селекторы CSS
- 70 2.3.2. Свойства стилей
- 71 2.3.3. Простой пример использования CSS
- 76 2.4. Организация просмотра с помощью DOM
- 78 2.4.1. Обработка DOM с помощью JavaScript
- 80 2.4.2. Поиск узла DOM
- 81 2.4.3. Создание узла DOM
- 82 2.4.4. Добавление стилей к документу
- 83 2.4.5. Свойство innerHTML
- 84 2.5. Асинхронная загрузка с использованием XML
- 84 2.5.1. Элементы IFrame
- 86 2.5.2. Объекты XmlDocument и XMLHttpRequest
- 89 2.5.3. Передача запроса серверу
- 91 2.5.4. Использование функции обратного вызова для контроля запроса
- 92 2.5.5. Жизненный цикл процедуры поддержки запроса
- 95 2.6. Отличия Ajax от классических технологий
- 97 2.7. Резюме
- 98 2.8. Ресурсы
- 99 3. Управление кодом Ajax
- 100 3.1. Порядок из хаоса
- 101 3.1.1. Образы разработки
- 102 3.1.2. Реструктуризация и Ajax
- 102 3.1.3. Во всем надо знать меру
- 103 3.1.4. Реструктуризация в действии
- 106 3.2. Варианты применения реструктуризации
- 107 3.2.1. Несоответствие браузеров: образы разработки Facade и Adapter
- 110 3.2.2. Управление обработчиками событий: образ разработки Observer
- 113 3.2.3. Повторное использование обработчиков событий: образ разработки Command
- 116 3.2.4. Обеспечение единственной ссылки на ресурс: образ разработки Singleton
- 120 3.3. «Модель-представление-контроллер»
- 122 3.4. Применение MVC для серверных программ
- 123 3.4.1. Серверная программа Ajax, созданная без применения образов разработки
- 126 3.4.2. Реструктуризация модели
- 129 3.4.3. Разделение содержимого и представления
- 132 3.5. Библиотеки независимых производителей
- 133 3.5.1. Библиотеки, обеспечивающие работу с различными браузерами
- 137 3.5.2. Компоненты и наборы компонентов
- 140 3.5.3. Элементы, располагаемые на стороне сервера
- 143 3.6. Резюме
- 144 3.7. Ресурсы
- 100 3.1. Порядок из хаоса
- 33 1. Каким должен быть Web-интерфейс
- 145 II. ОСНОВНЫЕ ПОДХОДЫ К РАЗРАБОТКЕ ПРИЛОЖЕНИЙ
- 147 4. Web-страница в роли приложения
- 148 4.1. Разновидности архитектуры MVC
- 148 4.1.1. Применение архитектуры MVC к программам различных уровней
- 149 4.1.2. Применение архитектуры MVC к объектам присутствующим в среде браузера
- 151 4.2. Представление в составе Ajax-приложения
- 152 4.2.1. Отделение логики от представления
- 157 4.2.2. Отделение представления от логики
- 161 4.3. Контроллер в составе Ajax -приложения
- 161 4.3.1. Классические JavaScript-обработчики
- 164 4.3.2. Модель обработки событий W3C
- 165 4.3.3. Реализация гибкой модели событий в JavaScript
- 169 4.4. Модель в составе Ajax-приложения
- 170 4.4.1. Использование JavaScript для моделирования предметной области
- 171 4.4.2. Взаимодействие с сервером
- 173 4.5. Генерация представления на основе модели
- 173 4.5.1. Отражение объектов JavaScript
- 177 4.5.2. Обработка массивов и объектов
- 180 4.5.3. Включение контроллера
- 183 4.6. Резюме
- 183 4.7. Ресурсы
- 148 4.1. Разновидности архитектуры MVC
- 185 5. Роль сервера в работе Ajax-приложения
- 186 5.1. Программы, выполняемые на сервере
- 187 5.2. Создание программ на стороне сервера
- 187 5.2.1. Популярные языки программирования
- 188 5.2.2. N-уровневые архитектуры
- 189 5.2.3. Управление моделью предметной области на стороне клиента и на стороне сервера
- 190 5.3. Принципы создания программ на сервере
- 190 5.3.1. Серверные программы, не соответствующие основным принципам разработки
- 192 5.3.2. Использование архитектуры Model2
- 193 5.3.3. Использование архитектуры на базе компонентов
- 196 5.3.4. Архитектуры, ориентированные на использование Web-служб
- 200 5.4. Частные решения: обмен данными
- 201 5.4.1. Взаимодействие, затрагивающее только клиентскую программу
- 201 5.4.2. Пример отображения информации о планетах
- 204 5.4.3. Взаимодействие, ориентированное на содержимое
- 207 5.4.4. Взаимодействие, ориентированное на сценарий
- 212 5.4.5. Взаимодействие, ориентированное на данные
- 217 5.5. Передача данных серверу
- 217 5.5.1. Использование HTML-форм
- 219 5.5.2. Использование объекта XMLHttpRequest
- 221 5.5.3. Управление обновлением модели
- 230 Резюме
- 231 Ресурсы
- 147 4. Web-страница в роли приложения
- 235 III. СОЗДАНИЕ ПРОФЕССИОНАЛЬНЫХ AJAX-ПРИЛОЖЕНИЙ
- 237 6. Информация для пользователя
- 238 6.1. Создание качественного приложения
- 239 6.1.1. Отклик программы
- 239 6.1.2. Надежность
- 240 6.1.3. Согласованность
- 241 6.1.4. Простота
- 241 6.1.5. Как получить результат
- 242 6.2. Предоставление сведений пользователю
- 242 6.2.1. Поддержка ответов на собственные запросы
- 244 6.2.2. Обработка обновлений, выполненных другими пользователями
- 248 6.3. Создание системы оповещения
- 249 6.3.1. Основные принципы оповещения
- 251 6.3.2. Определение требований к пользовательскому интерфейсу
- 252 6.4. Реализация базовых средств оповещения
- 252 6.4.1. Отображение пиктограмм в строке состояния
- 255 6.4.2. Отображение подробных сообщений
- 256 6.4.3. Формирование готовой системы
- 262 6.5. Предоставление информации в запросах
- 266 6.6. Информация о новизне данных
- 266 6.6.1. Простой способ выделения данных
- 268 6.6.2. Выделение данных с использованием библиотеки Scriptaculous
- 269 6.7. Резюме
- 270 6.8. Ресурсы
- 238 6.1. Создание качественного приложения
- 271 7. Безопасность Ajax-приложений
- 272 7.1. JavaScript и защита браузера
- 273 7.1.1. Политика «сервера-источника»
- 273 7.1.2. Особенности выполнения сценариев в Ajax-приложении
- 274 7.1.3. Проблемы с поддоменами
- 275 7.1.4. Несоответствие средств защиты в различных браузерах
- 276 7.2. Взаимодействие с удаленным сервером
- 277 7.2.1. Сервер в роли посредника при обращении к удаленной службе
- 278 7.2.2. Взаимодействие с Web-службами
- 288 7.3. Защита конфиденциальной информации
- 288 7.3.1. Вмешательство в процесс передачи данных
- 289 7.3.2. Организация защищенного HTTP-взаимодействия
- 291 7.3.3. Передача шифрованных данных в ходе обычного HTTP-взаимодействия
- 293 7.4. Управление доступом к потокам данных Ajax
- 293 7.4.1. Создание защищенных программ на уровне сервера
- 297 7.4.2. Ограничение доступа к данным из Web
- 302 7.5. Резюме
- 302 7.6. Ресурсы
- 272 7.1. JavaScript и защита браузера
- 303 8. Производительность приложения
- 304 8.1. Что такое производительность
- 305 8.2. Скорость выполнения JavaScript программ
- 306 8.2.1. Определение времени выполнения приложения
- 310 8.2.2. Использование профилировщика Venkman
- 313 8.2.3. Оптимизация скорости выполнения Ajax-приложения
- 324 8.3. Использование памяти JavaScript-кодом
- 324 8.3.1. Борьба с утечкой памяти
- 327 8.3.2. Особенности управления памятью в приложениях Ajax
- 333 8.4. Разработка с учетом производительности
- 333 8.4.1. Измерение объема памяти, занимаемой приложением
- 337 8.4.2. Простой пример управления памятью
- 342 8.4.3. Как уменьшить объем используемой памяти в 150 раз
- 344 8.5. Резюме
- 345 8.6. Ресурсы
- 237 6. Информация для пользователя
- 347 IV. AJAX В ПРИМЕРАХ
- 349 9. Динамические связанные комбинации
- 350 9.1. Сценарий двойной комбинации
- 350 9.1.1. Недостатки клиентского решения
- 351 9.1.2. Недостатки клиентского решения
- 352 9.1.3. Решения, предлагаемые Ajax
- 353 9.2. Архитектура клиента
- 353 9.2.1. Разработка формы
- 355 9.2.2. Разработка взаимодействия клиент/сервер
- 356 9.3. Реализация сервера: VB.NET
- 357 9.3.1. Определение формата XML-ответа
- 358 9.3.2. Написание кода сервера
- 360 9.4. Представление результатов
- 361 9.4.1. Навигация в документе XML
- 362 9.4.2. Применение каскадных таблиц стилей
- 364 9.5. Дополнительные вопросы
- 364 9.5.1. Запросы при выборе нескольких элементов
- 365 9.5.2. Переход от двойного связного выбора к тройному
- 366 9.6. Реструктуризация
- 367 9.6.1. Новый и улучшенный объект net.ContentLoader
- 372 9.6.2. Создание компонента двойного списка
- 379 9.7. Резюме
- 350 9.1. Сценарий двойной комбинации
- 381 10. Опрережающий ввод
- 382 10.1. Изучаем опережающий ввод
- 382 10.1.1. Типичные элементы приложений опережающего ввода
- 384 10.1.2. Google Suggest
- 385 10.1.3. Ajax как средство опережающего ввода
- 386 10.2. Структура серверной части сценария: С#
- 386 10.2.1. Сервер и база данных
- 388 10.2.2. Тестирование серверного кода
- 389 10.3. Структура клиентской части сценария
- 389 10.3.1. HTML
- 390 10.3.2. JavaScript
- 400 10.3.3. Обращение к серверу
- 410 10.4. Дополнительные возможности
- 411 10.5. Реструктуризация
- 412 10.5.1. День 1: план разработки компонента TextSuggest
- 415 10.5.2. День 2: создание TextSuggest - понятного и настраиваемого компонента
- 418 10.5.3. День 3: включаем Ajax
- 423 10.5.4. День 4: обработка событий
- 430 10.5.5. День 5: пользовательский интерфейс всплывающего окна с предлагаемыми вариантами
- 437 10.5.6. Итоги
- 437 10.6. Резюме
- 382 10.1. Изучаем опережающий ввод
- 439 11. Улучшенный Web-портал Ajax
- 440 11.1. Эволюционирующий портал
- 440 11.1.1. Классический портал
- 442 11.1.2. Портал с богатым пользовательским интерфейсом
- 443 11.2. Создание портала с использованием Java
- 444 11.3. Регистрация Ajax
- 445 11.3.1. Таблица пользователя
- 446 11.3.2. Серверная часть кода регистрации: Java
- 449 11.3.3. Структура регистрации (клиентская часть)
- 454 11.4. Реализация окон DHTML
- 454 11.4.1. База данных окон портала
- 455 11.4.2. Серверный код окна портала
- 460 11.4.3. Добавление внешней библиотеки JavaScript
- 462 11.5. Возможность автоматического сохранения
- 463 11.5.1. Адаптация библиотеки
- 465 11.5.2. Автоматическая запись информации в базе данных
- 468 11.6. Реструктуризация
- 470 11.6.1. Определение конструктора
- 471 11.6.2. Адаптация библиотеки AjaxWindows.js
- 473 11.6.3. Задание команд портала
- 476 11.6.4. Обработке средствами Ajax
- 477 11.6.5. Выводы
- 478 11.7. Резюме
- 440 11.1. Эволюционирующий портал
- 479 12. «Живой» поиск с использованием XSLT
- 480 12.1. Понимание технологий поиска
- 480 12.1.1. Классический поиск
- 482 12.1.2. Недостатки использования фреймов и всплывающих окон
- 483 12.1.3. «Живой» поиск с использованием Ajax и XSLT
- 484 12.1.4. Возврат результатов клиенту
- 485 12.2. Код клиентской части сценария
- 486 12.2.1. Настройка клиента
- 487 12.2.2. Инициализация процесса
- 488 12.3. Код серверной части приложения: PHP
- 489 12.3.1. Создание XML-документа
- 491 12.3.2. Создание документа XSLT
- 494 12.4. Объединение документов XSL и XML
- 496 12.4.1. Совместимость с браузером Microsoft Internet Explorer
- 496 12.4.2. Совместимость с браузерами Mozilla
- 497 12.5. Последние штрихи
- 498 12.5.1. Применение каскадных таблиц стилей
- 499 12.5.2. Улучшение поиска
- 501 12.5.3. Использовать ли XSLT
- 502 12.5.4. Решение проблемы закладок
- 503 12.6. Реструктуризация
- 504 12.6.1. Объект XSLTHelper
- 508 12.6.2. Компонент «живого» поиска
- 512 12.6.3. Выводы
- 512 12.7. Резюме
- 480 12.1. Понимание технологий поиска
- 515 13. Создание приложений Ajax, не использующих сервер
- 516 13.1. Считывание информации из внешнего мира
- 517 13.1.1. Поиск XML лент
- 518 13.1.2. Изучение структуры
- 520 13.2. Богатый пользовательский интерфейс
- 521 13.2.1.Чтение лент
- 522 13.2.2. HTML структура без таблиц
- 525 13.2.3. Гибкое CSS-форматирование
- 530 13.3. Загрузка RSS-лент
- 530 13.3.1. Глобальный уровень
- 532 13.3.2. Предварительная загрузка средствами Ajax
- 535 13.4. Богатый эффект перехода
- 536 13.4.1. Правила прозрачности, учитывающие индивидуальность браузеров
- 536 13.4.2. Реализация затухающего перехода
- 538 13.4.3. Интеграция таймеров JavaScript
- 540 13.5. Дополнительные возможности
- 540 13.5.1. Введение дополнительных лент
- 542 13.5.2. Интеграция функций пропуска и паузы
- 545 13.6. Как избежать ограничений проекта
- 545 13.6.1. Обход системы безопасности браузеров Mozilla
- 548 13.6.2. Изменение масштаба приложения
- 548 13.7. Реструктуризация
- 549 13.7.1. Модель приложения
- 551 13.7.2. Представление приложения
- 555 13.7.3. Контроллер приложения
- 567 13.7.4. Выводы
- 567 13.8. Резюме
- 516 13.1. Считывание информации из внешнего мира
- 349 9. Динамические связанные комбинации
- 569 V. ПРИЛОЖЕНИЯ
- 571 А. Инструменты для профессиональной работы с Ajax
- 572 А.1. Правильный набор инструментов
- 572 А.1.1. Получение совместимых инструментов
- 574 А.1.2. Создание собственных инструментов
- 574 А.1.3. Сопровождение набора инструментов
- 575 А.2. Редакторы и IDE
- 575 А.2.1. Что требуется от редактора кода
- 577 А.2.2. Существующие продукты
- 582 А.3. Отладчики
- 582 А.3.1. Для чего нужен отладчик
- 582 А.3.2. Отладчики JavaScript
- 587 А.3.3. Отладчики HTTP
- 589 А.3.4. Создание консоли вывода, встроенной в браузер
- 592 А.4. Инспекторы DOM
- 592 А.4.1. Использование DOM Inspector для браузеров Mozilla
- 594 А.4.2. Инспекторы DOM для браузера Internet Explorer
- 594 А.4.3. Средство Safari DOM Inspector для Mac OS X
- 595 А.5. Установка расширений Firefox
- 597 А.6. Ресурсы
- 572 А.1. Правильный набор инструментов
- 597 Б. JavaScript и объектно-ориентированное программирование
- 598 Б.1. JavaScript - это не Java
- 599 Б.2. Объекты в JavaScript
- 600 Б.2.1. Формирование объектов
- 604 Б.2.2. Функции-конструкторы, классы и прототипы
- 606 Б.2.3. Расширение встроенных классов
- 607 Б.2.4. Наследование прототипов
- 608 Б.2.5. Отражение в JavaScript-объектах
- 610 Б.2.6. Интерфейсы и виртуальные типы
- 613 Б.3. Методы и функции
- 613 Б.3.1. Функции как независимые элементы
- 615 Б.3.2. Присоединение функций к объектам
- 615 Б.3.3. Заимствование функций из других объектов
- 616 Б.3.4. Обработка событий в Ajax-программах и контексты функций
- 620 Б.3.5. Замыкания JavaScript
- 623 Б.4. Выводы
- 623 Б.5. Ресурсы
- 625 В. Библиотеки Ajax
- 639 Предметный указатель
- 571 А. Инструменты для профессиональной работы с Ajax
Инструкция как скачать книгу Дейв Крейн, Эрик Паскарелло, Даррен Джеймс: AJAX в действии в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.