О чем рассказывается в этой книге 16
Что потребуется при чтении этой книги 17
Кому адресована эта книга 18
Соглашения 18
Отзывы и пожелания 19
Поддержка клиентов 19
Загружаемые примеры программного кода 19
Ошибки и опечатки 20
Нарушение авторских прав 20
Вопросы 20
Глава 1. Дзен Angular 21
Знакомьтесь, AngularJS 22
Общие сведения о фреймворке 22
Найдите свой путь в проект 23
Сообщество 23
Обучающие ресурсы в Интернете 23
Библиотеки и расширения 24
Инструменты 24
Batarang 24
Plunker и jsFiddle 25
Расширения и дополнения для IDE 25
Ускоренное введение в AngularJS 25
Hello World - пример приложения на AngularJS 25
Двунаправленное связывание данных 27
Шаблон MVC в AngularJS 27
С высоты птичьего полета 28
Подробнее о контекстах 30
Представление 37
Модули и внедрение зависимостей 42
AngularJS и остальной мир 56
jOuery и AngularJS 58
Взгляд в будущее 59
В заключение 60
Глава 2. Сборка и тестирование 62
Введение в пример приложения 63
Область применения 63
Стек технологий 65
Хранилище данных 65
Система сборки 68
Принципы построения систем сборки 69
Инструменты 71
Организация файлов и каталогов 73
Каталоги верхнего уровня 74
Каталог с исходным кодом 75
Соглашения по именованию файлов 79
Модули и файлы AngularJS 80
Один файл, один модуль 80
Внутри модуля 81
Автоматическое тестирование 84
Модульные тесты 86
Интеграционные тесты 93
В заключение 97
Глава 3. Взаимодействие с сервером 99
Выполнение запросов XHR и JSONP с помощью $http 99
Модель данных и адреса URL в MongoLab 100
Краткий обзор Shttp 100
Ограничения политики общего происхождения 104
Promise API и служба $q 109
Получение отложенных результатов с помощью службы $q 110
Интеграция службы $q в AngularJS 119
Promise API и служба Shttp 120
Взаимодействие с конечными точками RESTful 121
Служба Sresource 122
Взаимодействия с веб-службами REST с помощью $http 128
Дополнительные возможности $http 132
Обработка ответов 132
Тестирование кода, осуществляющего взаимодействия с помощью Shttp 133
В заключение 136
Глава 4. Отображение и форматирование данных 137
Знакомство с директивами 137
Отображение результатов вычисления выражений 138
Директива интерполяции 138
Отображение значений с помощью ngBind 139
Включение разметки HTML в выражения 139
Отображение по условию 141
Включение блоков содержимого по условию 142
Отображение коллекций с помощью директивы ngRepeat 143
Знакомство с директивой ngRepeat 143
Специальные переменные 144
Итерации по свойствам объекта 145
Приемы использования директивы ngRepeat 145
Обработчики событий DOM 149
Увеличение эффективности с помощью шаблонов на основе DOM 150
Избыточный синтаксис 150
Применение директивы ngRepeat к множеству элементов DOM 151
Элементы и атрибуты не могут изменяться во время выполнения 152
Нестандартные элементы HTML и старые версии IE 153
Преобразование моделей с помощью фильтров 153
Применение встроенных фильтров 154
Создание собственных фильтров - реализация постраничного вывода 161
Доступ к фильтрам из кода на JavaScript 163
Правила использования фильтров 164
В заключение 168
Глава 5. Создание улучшенных форм 169
Сравнение традиционных форм с формами AngularJS 169
Введение в директиву ngModel 171
Создание формы с информацией о пользователе 172
Директивы ввода 173
Добавление проверки обязательного наличия значения 174
Текстовые элементы ввода 174
Кнопки-флажки 175
Радиокнопки 175
Элементы выбора из списка 176
Использование скрытых полей ввода 181
Устройство механизма связывания данных в ngModel 182
ngModelController 182
Проверка форм в AngularJS 184
ngFormControler 184
Добавление динамического поведения в форму с информацией о пользователе 185
Вывод сообщений об ошибках 186
Отключение процедуры проверки, встроенной в браузер 188
Вложенные формы 188
Вложенные формы как компоненты многократного пользования 189
Повторение вложенных форм 189
Проверка повторяющихся полей ввода 191
Отправка традиционной формы HTML 192
Непосредственная отправка форм на сервер 192
Обработка события отправки формы 193
Сброс формы в исходное состояние 194
В заключение 195
Глава 6. Организация навигации 196
Адреса URL в одностраничных веб-приложениях 197
Адреса URL с решеткой до появления HTML5 198
HTML5 и интерфейс истории посещений 199
Служба {location 200
Знакомство с интерфейсом службы {location и адресами URL 201
Адреса фрагментов, навигация внутри страницы и SanchorScroll 202
Настройка режима HTML5 интерпретации адресов URL 203
Навигация вручную с помощью службы {location 205
Служба $route 208
Определение основных маршрутов 208
Гибкое сопоставление маршрутов 210
Повторное использование шаблонов разметки с разными контроллерами 212
Предотвращение «мерцания» пользовательского интерфейса при изменении маршрута 213
Предотвращение изменения маршрута 215
Ограничения службы $route 216
Один маршрут соответствует одной области на экране 217
Распространенные приемы использования, советы и рекомендации 220
Обработка ссылок 220
Организация определений маршрутов 222
В заключение 224
Глава 7. Безопасность приложений 226
Аутентификация и авторизация на стороне сервера 227
Обработка неавторизованного доступа 227
Реализация прикладного интерфейса аутентификации на стороне сервера 228
Безопасность шаблонов разметки 228
Противостояние нападениям 229
Предотвращение перехвата cookie («атака через посредника») 230
Предотвращение нападений вида «межсайтовый скриптинг» 231
Предотвращение внедрения данных в формате JSON 233
Предотвращение подделки межсайтовых запросов 234
Обеспечение безопасности на стороне клиента 235
Служба security 236
Отображение формы аутентификации 236
Создание меню и панелей инструментов с поддержкой системы безопасности 238
Поддержка аутентификации и авторизации на стороне клиента 240
Обработка ошибок авторизации 241
Перехват ответов 242
Создание службы securitylnterceptor 242
Создание службы securityRetryQueue 244
Предотвращение переходов по защищенным маршрутам 246
Использование функций в свойстве resolve маршрутов 247
Создание службы authorization 248
В заключение 250
Глава 8. Создание собственных директив 251
Что такое директива AngularJS 251
Встроенные директивы 252
Использование директив в разметке HTML 253
Тестирование директив 255
Определение директивы 257
Оформление кнопок с помощью директив 258
Создание директивы button 258
Директивы-виджеты 261
Создание директивы постраничного просмотра 261
Тест для директивы постраничного просмотра списков 262
Использование шаблонов с разметкой HTML в директивах 263
Изолирование директивы от родительского контекста 264
Реализация виджета 267
Добавление в директиву функции обратного вызова setectPage 268
Создание директивы проверки 269
Внедрение контроллера другой директивы 270
Взаимодействие с контроллером ngModelController 271
Тестирование директивы проверки 272
Реализация директивы проверки 274
Асинхронная проверка модели 275
Имитация службы Users 275
Тестирование директивы асинхронной проверки 276
Реализация директивы асинхронной проверки 278
Директива-обертка для виджета выбора даты из библиотеки jQueryUI 279
Тестирование директив-оберток 281
Реализация директивы datepicker 282
В заключение 283
Глава 9. Создание продвинутых директив 285
Включение 285
Использование включения в директивах 286
Включение в директивах с изолированным контекстом 286
Директива вывода предупреждения на основе приема включения 286
Контекст включения 288
Создание и использование функций включения 291
Создание функции включения с помощью службы Scompile 291
Использование функций включения в директивах 292
Создание директивы if, использующей включение 294
Контроллеры директив 296
Внедрение специальных зависимостей в контроллеры директив 297
Создание директивы постраничного просмотра на основе контроллера 298
Различия между контроллерами директив и функциями связывания 299
Комплект директив виджета «аккордеон» 301
Управление процессом компиляции 305
Создание директивы field 306
Использование службы $interpolate 308
Динамическая загрузка шаблонов 310
Настройка шаблона директивы field 310
В заключение 312
Глава 10. Создание интернациональных веб-приложений 313
Использование национальных наборов символов и настроек 314
Модули с национальными настройками 314
Использование доступных национальных настроек 315
Поддержка переводов 317
Перевод строк в шаблонах AngularJS 318
Перевод строк в коде JavaScript 321
Шаблоны проектирования, советы и рекомендации 322
Инициализация приложений с учетом выбранных национальных настроек 322
Переключение между национальными настройками 325
Нестандартное форматирование дат, чисел и валют 326
В заключение 328
Глава 11. Создание надежных веб-приложений на основе AngularJS 330
Внутренние механизмы AngularJS 331
Это не механизм строковых шаблонов 331
Настройка производительности - определить требования, измерить, настроить и повторить 343
Настройка производительности приложений на основе AngularJS 345
Оптимизация использования процессора 346
Оптимизация потреблении памяти 356
Директива ng-repeat 358
В заключение 360
Глава 12. Подготовка и развертывание веб-приложений на основе AngularJS 362
Повышение производительности сетевых операций 363
Минификация статических ресурсов 363
Предварительная загрузка шаблонов 368
Оптимизация начальной страницы 373
Избегайте отображения шаблонов в необработанном виде 373
AngularJS и подключение прикладных сценариев 376
Поддержка браузеров 379
Поддержка Internet Explorer 380
В заключение 381
Предметный указатель 383
Добавить комментарий