JavaScript. Оптимизация производительности

Для возможности скачивать книги Вам необходимо пройти

Регистрацию

JavaScript. Оптимизация производительности


Автор: Закас Н.

Год: 2012

Если вы относитесь к подавляющему большинству веб-разработчиков, то наверняка широко применяете JavaScript для создания интерактивных веб-приложений с малым временем отклика. Проблема состоит в том, что строки с программным кодом на языке JavaScript могут замедлять работу приложений.

Эта книга откроет вам приемы и стратегии, которые помогут в ходе разработки устранить узкие места, влекущие за собой снижение производительности. Вы узнаете, как ускорить выполнение, загрузку, операции с деревом DOM, работу страницы в целом и многое другое.

Николас Закас, программист из компании Yahoo!, специализирующийся на разработке пользовательских интерфейсов веб-приложений, и еще пять экспертов в области использования JavaScript представят оптимальные способы загрузки сценариев и другие приемы программирования, которые помогут вам обеспечить наиболее эффективное и быстрое выполнение программного кода на JavaScript. Вы познакомитесь с наиболее передовыми приемами сборки и развертывания файлов в действующем окружении и с инструментами, которые помогут в поиске проблем.

Книга адресована веб-разработчикам со средним и высоким уровнем владения языком JavaScript, желающим повысить производительность интерфейсов веб-приложений.

Если вы относитесь к подавляющему большинству веб-разработчиков, то наверняка широко применяете JavaScript для создания интерактивных веб-приложений с малым временем отклика. Проблема состоит в том, что строки с программным кодом на языке JavaScript могут замедлять работу приложений.

Эта книга откроет вам приемы и стратегии, которые помогут в ходе разработки устранить узкие места, влекущие за собой снижение производительности. Вы узнаете, как ускорить выполнение, загрузку, операции с деревом DOM, работу страницы в целом и многое другое.

Николас Закас, программист из компании Yahoo!, специализирующийся на разработке пользовательских интерфейсов веб-приложений, и еще пять экспертов в области использования JavaScript представят оптимальные способы загрузки сценариев и другие приемы программирования, которые помогут вам обеспечить наиболее эффективное и быстрое выполнение программного кода на JavaScript. Вы познакомитесь с наиболее передовыми приемами сборки и развертывания файлов в действующем окружении и с инструментами, которые помогут в поиске проблем.

Книга адресована веб-разработчикам со средним и высоким уровнем владения языком JavaScript, желающим повысить производительность интерфейсов веб-приложений.

Кол-во страниц:256 Язык:Русский Издательство:Символ- Плюс

Предисловие 11
1. Загрузка и выполнение 21
Местоположение сценария 22
Группировка сценариев 24
Неблокирующая загрузка сценариев 26
Отложенные сценарии 26
Динамические элементы script 27
Инъекция сценариев с помощью XMLHttpRequest 31
Рекомендуемые способы неблокирующей загрузки 32
В заключение 36
2. Доступ к данным 37
Управление областью видимости 38
Цепочки областей видимости и разрешение идентификаторов 39
Производительность разрешения идентификаторов 41
Увеличение цепочки областей видимости . 44
Динамические области видимости 46
Замыкания, области видимости и память 47
Члены объектов 50
Прототипы 50
Цепочки прототипов 52
Вложенные члены 54
Кэширование значений членов объектов 55
В заключение 57
3. Работа с деревом DOM 58
Модель DOM в мире браузеров 58
Врожденная медлительность 59
Доступ к дереву DOM и его модификация 59
Свойство inner HTML в сравнении с методами DOM 61
Копирование узлов 65
HTML-коллекции 66
Обход дерева DOM 71
Перерисовывание и перекомпоновка 75
Когда происходит перекомпоновка? 75
Буферизация и применение изменений в дереве отображения 76
Уменьшение количества операций перерисовывания и перекомпоновки 78
Кэширование информации о размещении 81
Исключение элементов из потока отображения для внесения изменений 82
IE и :hover 82
Делегирование обработки событий 83
В заключение 85
4. Алгоритмы и управление потоком выполнения 87
Циклы 87
Типы циклов 88
Производительность цикла 89
Итерации на основе функций 94
Условные инструкции 95
Сравнение if-else и switch 95
Оптимизация инструкций if-e lse 97
Поисковые таблицы 99
Рекурсия 101
Ограниченность размера стека вызовов. 101
Шаблоны реализации рекурсии 103
Итерации 104
Мемоизация 105
В заключение 108
5. Строки и регулярные выражения 109
Конкатенация строк 110
Операторы плюс (+) и плюс-равно (+=) 110
Слияние элементов массива 113
String.prototype.concat() 115
Оптимизация регулярных выражений 116
Как работают регулярные выражения 117
Возвраты 118
Исключение возвратов 121
Примечание к измерению производительности 127
Дополнительные пути повышения производительности регулярных выражений 127
Когда не следует использовать регулярные выражения 131
Усечение строк 132
Усечение с применением регулярных выражений 132
Усечение без применения регулярных выражений 135
Смешанное решение 136
В заключение 138
6. Отзывчивые интерфейсы 139
Поток выполнения пользовательского интерфейса браузера 139
Ограничения браузеров 141
Слишком долго - это сколько? 143
Использование таймеров 145
Основы таймеров 145
Точность таймера 148
Обработка массивов с помощью таймеров 148
Деление заданий 150
Хронометраж выполнения программного кода 152
Таймеры и производительность 154
Фоновые потоки выполнения 155
Окружение фонового потока выполнения 155
Взаимодействие с фоновыми потоками выполнения 156
Загрузка внешних файлов 157
Практическое использование 157
В заключение 159
7. Ajax 160
Передача данных 160
Запрос данных 161
Отправка данных 168
Форматы данных 171
XML 171
JSON 175
HTML 179
Нестандартное форматирование 181
Заключительные выводы о форматах данных 184
Рекомендации по повышению производительности Ajax 185
Кэширование данных 185
Известные ограничения библиотек поддержки Ajax 188
В заключение 189
8. Приемы программирования 191
Предотвращение повторной интерпретации 191
Использование литералов объектов/массивов 193
Предотвращение повторного выполнения работы 194
Отложенная загрузка 195
Предварительная условная загрузка 196
Использование сильных сторон 197
Битовые операторы 197
Встроенные методы 200
В заключение 202
9. Сборка и развертывание высокопроизводительных приложений на JavaScript 203
Apache Ant 204
Объединение JavaScript-файлов 205
Предварительная обработка JavaScript-файлов 206
Минификация JavaScript-файлов 209
Сборка в виде отдельного этапа или во время выполнения 211
Сжатие JavaScript-сценариев 211
Кэширование JavaScript-файлов 213
Решение проблем, связанных с кэшированием 214
Использование сети распространения содержимого 215
Развертывание JavaScript-pecypcoв 215
Гибкий процесс сборки JavaScript-файлов 216
В заключение 218
10. Инструменты 219
Профилирование JavaScript-сценариев 220
YUI Profiler 221
Анонимные функции 225
Firebug 226
Панель профилировщика в консоли 227
Прикладной интерфейс консоли 228
Панель Net 229
Инструменты разработчика в Internet Explorer 230
Веб-инспектор в браузере Safari 233
Панель Profiles 233
Панель Resources 236
Инструменты разработчика в Chrome 237
Блокирование сценариями отображения страницы 238
Page Speed 239
Fiddler 241
YSlow 243
dynaTrace Ajax Edition 245
В заключение 248
Алфавитный указатель 249