Оглавление

Предисловие
Глава 1. Загрузка и выполнение
Местоположение сценария
Группировка сценариев
Неблокирующая загрузка сценариев
Отложенные сценарии
Динамические элементы script
Инъекция сценариев с помощью XMLHttpRequest
Рекомендуемые способы неблокирующей загрузки
В заключение
Глава 2. Доступ к данным
Управление областью видимости
Цепочки областей видимости и разрешение идентификаторов
Производительность разрешения идентификаторов
Увеличение цепочки областей видимости
Динамические области видимости
Замыкания, области видимости и память
Члены объектов
Прототипы
Цепочки прототипов
Вложенные члены
Кэширование значений членов объектов
В заключение
Глава 3. Работа с деревом DOM
Модель DOM в мире броузеров
Врожденная медлительность
Доступ к дереву DOM и его модификация
Свойство innerHTML в сравнении с методами DOM
Копирование узлов
HTML-коллекции
Обход дерева DOM
Перерисовывание и перекомпоновка
Когда происходит перекомпоновка?
Буферизация и применение изменений в дереве отображения
Уменьшение количества операций перерисовывания и перекомпоновки
Кэширование информации о размещении
Исключение элементов из потока отображения для внесения изменений
IE и :hover
Делегирование обработки событий
В заключение
Глава 4. Алгоритмы и управление потоком выполнения
Циклы
Типы циклов
Производительность цикла
Итерации на основе функций
Условные инструкции
Сравнение if-else и switch
Оптимизация инструкций if-else
Поисковые таблицы
Рекурсия
Ограниченность размера стека вызовов
Шаблоны реализации рекурсии
Итерации
Мемоизация
В заключение
Глава 5. Строки и регулярные выражения
Конкатенация строк
Операторы плюс (+) и плюс­равно (+=)
Слияние элементов массива
String.prototype.concat()
Оптимизация регулярных выражений
Как работают регулярные выражения
Возвраты
Исключение возвратов
Примечание к измерению производительности
Дополнительные пути повышения производительности регулярных выражений
Когда не следует использовать регулярные выражения
Усечение строк
Усечение с применением регулярных выражений
Усечение без применения регулярных выражений
Смешанное решение
В заключение
Глава 6. Отзывчивые интерфейсы
Поток выполнения пользовательского интерфейса броузера
Ограничения броузеров
Слишком долго – это сколько?
Использование таймеров
Основы таймеров
Точность таймера
Обработка массивов с помощью таймеров
Деление заданий
Хронометраж выполнения программного кода
Таймеры и производительность
Фоновые потоки выполнения
Окружение фонового потока выполнения
Взаимодействие с фоновыми потоками выполнения
Загрузка внешних файлов
Практическое использование
В заключение
Глава 7. Ajax
Передача данных
Запрос данных
Отправка данных
Форматы данных
XML
JSON
HTML
Нестандартное форматирование
Заключительные выводы о форматах данных
Рекомендации по повышению производительности Ajax
Кэширование данных
Известные ограничения библиотек поддержки Ajax
В заключение
Глава 8. Приемы программирования
Предотвращение повторной интерпретации
Использование литералов объектов/массивов
Предотвращение повторного выполнения работы
Отложенная загрузка
Предварительная условная загрузка
Использование сильных сторон
Битовые операторы
Встроенные методы
В заключение
Глава 9. Сборка и развертывание высокопроизводительных приложений на JavaScript
Apache Ant
Объединение JavaScript-файлов
Предварительная обработка JavaScript-файлов
Минификация JavaScript-файлов
Сборка в виде отдельного этапа или во время выполнения
Сжатие JavaScript-сценариев
Кэширование JavaScript-файлов
Решение проблем, связанных с кэшированием
Использование сети распространения содержимого
Развертывание JavaScript-ресурсов
Гибкий процесс сборки JavaScript-файлов
В заключение
Глава 10. Инструменты
Профилирование JavaScript-сценариев
YUI Profiler
Анонимные функции
Firebug
Панель профилировщика в консоли
Прикладной интерфейс консоли
Панель Net
Инструменты разработчика в Internet Explorer
Веб-инспектор в броузере Safari
Панель Profiles
Панель Resources
Инструменты разработчика в Chrome
Блокирование отображения страницы сценариями
Page Speed
Fiddler
YSlow
dynaTrace Ajax Edition
В заключение
Алфавитный указатель