Опубликовано

Вышла книга “JavaScript. 32 урока для начинающих”

JavaScript. 32 урока для начинающих

В книге 32 иллюстрированных урока, 40 практических упражнений на тему программирования веб-сценариев и более 20 заданий для самостоятельной работы. Изложены основы JavaScript: типы данных, переменные, управляющие конструкции, функции, массивы, объекты, классы, регулярные выражения, модули, средства для обработки исключений и отладки. Раскрыты события и их обработка, генерирование содержимого страниц, работа с графикой и мультимедиа, веб-формами и элементами управления, взаимодействие с веб-обозревателем, детекторы видимости и изменения размеров. Рассмотрены таймеры, фоновые потоки, использование промисов и асинхронных функций, работа с файлами, программная графика и загрузка данных с веб-сервера. Рассказано о программировании фронтенд- и бэкенд-приложений в среде Node.js, а также об обработке межхостовых запросов.
Электронный архив на сайте издательства содержит коды всех примеров и результаты выполнения упражнений.

Для начинающих веб-разработчиков

JavaScript в картинках и упражнениях

Простым языком, кратко, наглядно рассказано о программировании веб-сценариев на языке JavaScript. В книге 32 иллюстрированных урока, 40 практических упражнений и более 20 заданий для самостоятельной работы.

Вы узнаете, как

  • обрабатывать события,
  • генерировать содержимое веб-страниц программно,
  • написать спойлер, слайдер и видеопроигрыватель,
  • проверить правильность занесения данных в веб-форму,
  • выполнять длительные вычисления в фоновом потоке,
  • нарисовать график на веб-странице,
  • загружать данные с сервера,
  • разбивать код на отдельные модули,
  • писать компоненты,
  • программировать веб-приложения, фронтенды и бэкенды,
  • обрабатывать межхостовые запросы,
  • отлаживать веб-сценарии.

Книгу “JavaScript. 32 урока для начинающих” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Предисловие…………………………………………………………………………………………… 15

Почему JavaScript?…………………………………………………………………………………………………………………….. 15

Что вы найдете в этой книге?……………………………………………………………………………………………………. 15

Что нового?…………………………………………………………………………………………………………………………………. 16

Что вам понадобится?……………………………………………………………………………………………………………….. 17

Типографские соглашения………………………………………………………………………………………………………… 17

Часть I. Начала JavaScript и веб-программирования……… 21

Урок 1. Введение в язык JavaScript………………………………………………………… 23

1.1. Упражнение. Консоль веб-обозревателя………………………………………………………………………….. 23

1.2. Упражнение. Типы данных и операторы………………………………………………………………………….. 28

1.3. Упражнение. Переменные и константы…………………………………………………………………………….. 31

1.4. Упражнение. Управляющие выражения…………………………………………………………………………… 33

1.5. Упражнение. Функции………………………………………………………………………………………………………… 36

1.6. Упражнение. Объекты, свойства, методы и классы…………………………………………………………. 37

1.7. Упражнение. Массивы……………………………………………………………………………………………………….. 42

1.8. Самостоятельные упражнения………………………………………………………………………………………….. 44

Урок 2. Введение в веб-программирование…………………………………………….. 45

2.1. Упражнение. Программное формирование содержимого веб-страницы………………………. 45

2.2. Упражнение. Доступ к элементам веб-страницы…………………………………………………………….. 48

2.3. Упражнение. Обработка событий……………………………………………………………………………………… 51

2.4. Упражнение. Взаимодействие с элементами управления……………………………………………….. 54

2.5. Самостоятельные упражнения………………………………………………………………………………………….. 56

Часть II. Язык JavaScript……………………………………………………………… 57

Урок 3. Основные понятия JavaScript……………………………………………………. 59

3.1. Выражения, программы и веб-сценарии…………………………………………………………………………… 59

3.1.1. Правила написания выражений………………………………………………………………………………. 59

3.1.2. Встраивание веб-сценариев в веб-страницы………………………………………………………….. 62

3.1.3. Выполнение веб-сценариев……………………………………………………………………………………… 64

3.2. Ключевые слова JavaScript………………………………………………………………………………………………… 65

3.3. Комментарии……………………………………………………………………………………………………………………….. 65

3.4. Строгий режим…………………………………………………………………………………………………………………….. 66

3.5. Блоки……………………………………………………………………………………………………………………………………. 67

3.6. Операторы, их приоритет и последовательность выполнения. Круглые скобки………….. 68

3.7. Типы данных……………………………………………………………………………………………………………………….. 69

3.7.1. Получение типа данных, к которому принадлежит значение………………………………. 70

3.7.2. Неопределенный тип (undefined)…………………………………………………………………………….. 71

3.7.3. Значащие и ссылочные типы данных…………………………………………………………………….. 71

3.8. Присваивание………………………………………………………………………………………………………………………. 72

3.8.1. Простое присваивание……………………………………………………………………………………………… 72

3.8.2. Комбинированное присваивание…………………………………………………………………………….. 73

3.8.3. Условное присваивание……………………………………………………………………………………………. 74

3.9. Оператор выбора………………………………………………………………………………………………………………… 74

3.10. Переменные и константы…………………………………………………………………………………………………. 75

3.10.1. Объявление переменных. Область видимости……………………………………………………. 75

3.10.2. Обращение к переменным…………………………………………………………………………………….. 78

3.10.3. Проверка существования переменной………………………………………………………………… 78

3.10.4. Присваивание значения несуществующей переменной…………………………………….. 79

3.11. Глобальный объект, контекст выполнения и переменная this………………………………………. 79

Урок 4. Логические величины и управляющие выражения……………………. 81

4.1. Логические величины…………………………………………………………………………………………………………. 81

4.1.1. Введение в логический тип данных…………………………………………………………………………. 81

4.1.2. Операторы сравнения………………………………………………………………………………………………. 81

4.1.3. Логические операторы……………………………………………………………………………………………… 83

4.1.4. Преобразование нелогических значений в логические…………………………………………. 84

4.1.4.1. Неявное преобразование……………………………………………………………………………. 84

4.1.4.2. Явное преобразование………………………………………………………………………………… 85

4.1.4.3. Еще раз о проверке существования переменной………………………………………. 85

4.2. Управляющие выражения………………………………………………………………………………………………….. 86

4.2.1. Условные выражения……………………………………………………………………………………………….. 86

4.2.1.1. Множественные условные выражения……………………………………………………… 87

4.2.2. Условный оператор………………………………………………………………………………………………….. 87

4.2.3. Выражение выбора…………………………………………………………………………………………………… 88

4.2.4. Циклы…………………………………………………………………………………………………………………………. 90

4.2.4.1. Цикл со счетчиком………………………………………………………………………………………. 90

4.2.4.2. Цикл с предусловием…………………………………………………………………………………… 92

4.2.4.3. Цикл с постусловием…………………………………………………………………………………… 92

4.2.4.4. Цикл перебора последовательности…………………………………………………………. 93

4.2.4.5. Цикл по свойствам объекта………………………………………………………………………… 93

4.2.4.6. Прерывание цикла………………………………………………………………………………………. 94

4.2.4.7. Прерывание итерации цикла……………………………………………………………………… 94

4.2.4.8. Бесконечный цикл……………………………………………………………………………………….. 94

Урок 5. Числа…………………………………………………………………………………………. 96

5.1. Обычные числа……………………………………………………………………………………………………………………. 96

5.1.1. Запись обычных чисел……………………………………………………………………………………………… 96

5.1.2. Арифметические операторы…………………………………………………………………………………….. 98

5.1.3. Методы и свойства класса Number…………………………………………………………………………. 99

5.1.3.1. Форматированный вывод чисел………………………………………………………………. 102

5.1.4. Класс Math………………………………………………………………………………………………………………. 106

5.1.5. Двоичные операторы……………………………………………………………………………………………… 108

5.1.6. Преобразование значений других типов в числовые………………………………………….. 111

5.1.6.1. Неявное преобразование………………………………………………………………………….. 111

5.1.6.2. Явное преобразование……………………………………………………………………………… 111

5.1.7. Точность представления обычных чисел. Потеря точности………………………………. 113

5.2. Упражнение. Реализуем форматированный вывод чисел…………………………………………….. 114

5.3. Большие целые числа……………………………………………………………………………………………………….. 115

5.4. Самостоятельное упражнение…………………………………………………………………………………………. 117

Урок 6. Строки…………………………………………………………………………………….. 118

6.1. Запись строк………………………………………………………………………………………………………………………. 118

6.1.1. Шаблонные строки…………………………………………………………………………………………………. 120

6.1.1.1. Помеченные строки…………………………………………………………………………………… 120

6.2. Простейшие операции со строками………………………………………………………………………………… 122

6.3. Свойства и методы класса String…………………………………………………………………………………….. 124

6.3.1. Сравнение строк с учетом текущей локали………………………………………………………….. 128

6.4. Преобразование значений других типов в строки…………………………………………………………. 128

6.4.1. Неявное преобразование……………………………………………………………………………………….. 128

6.4.2. Явное преобразование……………………………………………………………………………………………. 129

6.5. Упражнение. Использование средств для обработки строк при программном генерировании содержимого веб-страницы…………………………………………………………………………………………………………………………………………… 129

6.6. Самостоятельное упражнение…………………………………………………………………………………………. 133

Урок 7. Временне отметки…………………………………………………………………. 134

7.1. Создание временнх отметок………………………………………………………………………………………….. 134

7.2. Методы класса Date…………………………………………………………………………………………………………. 135

7.2.1. Форматированный вывод временнх отметок…………………………………………………….. 137

Урок 8. Функции………………………………………………………………………………….. 140

8.1. Вызов функций………………………………………………………………………………………………………………….. 140

8.2. Объявление функций…………………………………………………………………………………………………………. 141

8.2.1. Объявление локальных переменных…………………………………………………………………….. 145

8.2.2. Необязательные параметры функций…………………………………………………………………… 145

8.2.3. Функции с произвольным количеством параметров……………………………………………. 146

8.2.4. Вложенные функции……………………………………………………………………………………………….. 147

8.3. Функция как значение. Функциональный тип данных………………………………………………….. 147

8.3.1. Присваивание функций…………………………………………………………………………………………… 148

8.3.2. Проверка существования функции………………………………………………………………………… 148

8.4. Упражнение. Спойлер, часть 1………………………………………………………………………………………… 149

8.5. Специальные разновидности функций……………………………………………………………………………. 153

8.5.1. Анонимные функции……………………………………………………………………………………………….. 153

8.5.2. Стрелочные функции……………………………………………………………………………………………… 154

8.5.3. Функции однократного вызова……………………………………………………………………………… 155

8.5.4. Замыкания……………………………………………………………………………………………………………….. 156

8.5.4.1. Фабрики функций………………………………………………………………………………………. 157

8.5.4.2. Замыкания однократного вызова…………………………………………………………….. 158

8.6. Упражнение. Спойлер, часть 2………………………………………………………………………………………… 158

8.7. Упражнение. Рекурсия и ее использование…………………………………………………………………….. 160

8.8. Контекст выполнения функции и его указание………………………………………………………………. 162

8.8.1. Контекст выполнения обычных и стрелочных функций…………………………………….. 162

8.8.2. Явное указание контекста выполнения………………………………………………………………… 163

8.9. Самостоятельные упражнения………………………………………………………………………………………… 164

Урок 9. Массивы, множества и словари……………………………………………….. 165

9.1. Массивы…………………………………………………………………………………………………………………………….. 165

9.1.1. Обычные массивы…………………………………………………………………………………………………… 165

9.1.1.1. Создание обычных массивов…………………………………………………………………… 165

9.1.1.2. Простейшие операции с обычными массивами……………………………………… 167

9.1.1.3. Вложенные массивы…………………………………………………………………………………. 168

9.1.1.4. Свойство и методы класса Array……………………………………………………………… 169

9.1.1.5. Сортировка массивов……………………………………………………………………………….. 176

9.1.1.6. Деструктурирование массивов………………………………………………………………… 177

9.1.1.7. Копирование массивов……………………………………………………………………………… 180

9.1.2. Типизированные массивы………………………………………………………………………………………. 181

9.2. Множества…………………………………………………………………………………………………………………………. 182

9.2.1. Создание множеств…………………………………………………………………………………………………. 182

9.2.2. Простейшие операции со множествами……………………………………………………………….. 183

9.2.3. Свойство и методы класса Set……………………………………………………………………………….. 184

9.3. Словари……………………………………………………………………………………………………………………………… 185

9.3.1. Создание словарей…………………………………………………………………………………………………. 185

9.3.2. Простейшие операции со словарями…………………………………………………………………….. 186

9.3.3. Свойство и методы класса Map…………………………………………………………………………….. 187

9.4. Самостоятельные упражнения………………………………………………………………………………………… 189

Урок 10. Объекты………………………………………………………………………………… 190

10.1. Создание объектов………………………………………………………………………………………………………….. 191

10.2. Работа с объектными свойствами и методами…………………………………………………………….. 191

10.2.1. Доступ к объектным свойствам и методам……………………………………………………….. 192

10.2.1.1. Вложенные объекты. Цепочки операторов доступа………………………… 192

10.2.1.2. Условный доступ…………………………………………………………………………………. 193

10.2.1.3. Альтернативный формат доступа к объектным свойствам и методам 194

10.2.2. Проверка существования свойства или метода……………………………………………….. 194

10.2.3. Добавление свойств к объектам. Добавленные свойства……………………………….. 196

10.2.4. Удаление свойств………………………………………………………………………………………………… 197

10.3. Простые объекты…………………………………………………………………………………………………………….. 197

10.3.1. Методы в простых объектах……………………………………………………………………………… 199

10.3.2. Копирование простых объектов………………………………………………………………………… 200

10.3.3. Фабрики объектов……………………………………………………………………………………………….. 201

10.4. Простейшие действия с объектами……………………………………………………………………………….. 201

10.5. Деструктурирование объектов………………………………………………………………………………………. 204

10.6. Нулевая ссылка………………………………………………………………………………………………………………. 206

10.7. Объектная природа значащих типов…………………………………………………………………………….. 207

10.8. Работа со статическими свойствами и методами………………………………………………………… 208

10.9. Эмблемы………………………………………………………………………………………………………………………….. 208

Урок 11. Классы…………………………………………………………………………………… 211

11.1. Объявление классов………………………………………………………………………………………………………… 211

11.1.1. Объявление объектных свойств класса…………………………………………………………….. 212

11.1.2. Объявление объектных методов класса……………………………………………………………. 213

11.1.3. Объявление конструктора………………………………………………………………………………….. 214

11.1.4. Объявление объектных динамических свойств………………………………………………… 215

11.1.5. Объявление статических свойств и методов…………………………………………………….. 216

11.1.6. Закрытые свойства и методы…………………………………………………………………………….. 219

11.2. Упражнение. Спойлер, часть 3………………………………………………………………………………………. 220

11.3. Наследование классов……………………………………………………………………………………………………. 224

11.3.1. Перекрытие свойств и методов………………………………………………………………………….. 225

11.3.2. Переопределение методов………………………………………………………………………………….. 226

11.3.3. Переопределение динамических свойств…………………………………………………………. 228

11.3.4. Неявное наследование от класса Object…………………………………………………………… 229

11.4. Классы как значения………………………………………………………………………………………………………. 229

11.4.1. Присваивание классов………………………………………………………………………………………… 229

11.4.2. Проверка существования класса, его свойств и методов………………………………… 229

11.5. Анонимные классы…………………………………………………………………………………………………………. 230

11.6. Фабрики классов…………………………………………………………………………………………………………….. 231

11.7. Упражнение. Усовершенствованный спойлер……………………………………………………………… 231

11.8. Управление преобразованием объектов в значения значащих типов……………………….. 234

11.9. Пространства имен…………………………………………………………………………………………………………. 236

11.10. Расширение функциональности встроенных классов. Полифиллы…………………………. 237

11.11. Самостоятельное упражнение…………………………………………………………………………………….. 238

Урок 12. Итераторы и генераторы………………………………………………………… 239

12.1. Итераторы……………………………………………………………………………………………………………………….. 239

12.1.1. Итерируемые функции и методы……………………………………………………………………….. 240

12.1.2. Итерируемые объекты и классы………………………………………………………………………… 241

12.2. Упражнение. Числа Фибоначчи…………………………………………………………………………………….. 242

12.3. Генераторы……………………………………………………………………………………………………………………… 245

12.3.1. Генераторы-функции и генераторы-методы…………………………………………………….. 245

12.3.2. Генераторы-объекты и генераторы-классы……………………………………………………… 247

12.4. Самостоятельное упражнение………………………………………………………………………………………. 247

Урок 13. Регулярные выражения………………………………………………………….. 248

13.1. Введение в регулярные выражения……………………………………………………………………………….. 248

13.1.1. Создание регулярных выражений…………………………………………………………………….. 248

13.1.2. Использование регулярных выражений: простые случаи………………………………. 250

13.2. Специальные символы, применяемые в регулярных выражениях……………………………… 250

13.2.1. Метасимволы………………………………………………………………………………………………………. 250

13.2.2. Поднаборы…………………………………………………………………………………………………………… 251

13.2.3. Вариант……………………………………………………………………………………………………………….. 252

13.2.4. Квантификаторы…………………………………………………………………………………………………. 252

13.2.5. Подквантификатор……………………………………………………………………………………………… 254

13.2.6. Группы и обратные ссылки……………………………………………………………………………….. 254

13.2.7. Обычные символы………………………………………………………………………………………………. 256

13.3. Поиск и замена с помощью регулярных выражений…………………………………………………… 256

13.3.1. Обычный режим поиска……………………………………………………………………………………… 256

13.3.2. Глобальный поиск………………………………………………………………………………………………. 257

13.3.3. Многострочный поиск………………………………………………………………………………………… 259

13.3.4. Замена совпавших фрагментов………………………………………………………………………….. 259

13.3.5. Прочие полезные инструменты…………………………………………………………………………. 260

13.4. Упражнение. Использование регулярных выражений для обработки строк……………. 260

13.5. Самостоятельное упражнение………………………………………………………………………………………. 262

Урок 14. Модули…………………………………………………………………………………… 263

14.1. Введение в модули………………………………………………………………………………………………………….. 263

14.2. Экспорт……………………………………………………………………………………………………………………………. 265

14.2.1. Экспорт по умолчанию………………………………………………………………………………………. 265

14.2.2. Множественный экспорт……………………………………………………………………………………. 265

14.2.2.1. Синтаксис № 1……………………………………………………………………………………… 266

14.2.2.2. Синтаксис № 2……………………………………………………………………………………… 266

14.2.3. Гибридный экспорт…………………………………………………………………………………………….. 267

14.3. Импорт……………………………………………………………………………………………………………………………… 267

14.3.1. Импорт по умолчанию……………………………………………………………………………………….. 267

14.3.2. Множественный импорт…………………………………………………………………………………….. 268

14.3.2.1. Синтаксис № 1……………………………………………………………………………………… 268

14.3.2.2. Синтаксис № 2……………………………………………………………………………………… 269

14.3.3. Гибридный импорт……………………………………………………………………………………………… 269

14.3.4. Написание интернет-адресов импортируемых модулей………………………………… 270

14.3.5. Как выполняется импорт?………………………………………………………………………………….. 270

14.4. Прогон модулей………………………………………………………………………………………………………………. 271

14.5. Упражнение. Реорганизация кода с применением модулей……………………………………….. 271

14.6. Самостоятельное упражнение………………………………………………………………………………………. 272

Урок 15. Обработка программных ошибок. Исключения…………………….. 273

15.1. Исключения……………………………………………………………………………………………………………………… 273

15.2. Обработка исключений………………………………………………………………………………………………….. 274

15.3. Принудительное возбуждение исключений…………………………………………………………………. 276

15.3.1. Объявление своих классов исключений……………………………………………………………. 277

15.4. Упражнение. Спойлер, часть 4………………………………………………………………………………………. 277

15.5. Самостоятельное упражнение………………………………………………………………………………………. 278

Урок 16. Средства отладки…………………………………………………………………… 279

16.1. Консоль веб-обозревателя……………………………………………………………………………………………… 279

16.1.1. Сообщения об ошибках, выводимые в консоли……………………………………………….. 279

16.1.2. Вывод произвольных сообщений в консоли…………………………………………………….. 281

16.2. Отладчик………………………………………………………………………………………………………………………….. 282

16.2.1. Открытие файлов с программным кодом………………………………………………………….. 283

16.2.2. Создание и удаление точек останова……………………………………………………………….. 283

16.2.3. Пошаговое выполнение кода……………………………………………………………………………… 285

16.2.4. Просмотр значений переменных……………………………………………………………………….. 287

16.3. Инспектор DOM………………………………………………………………………………………………………………. 288

16.4. Самостоятельное упражнение………………………………………………………………………………………. 289

Часть III. Управление веб-страницей
и веб-обозревателем…………………………………………………………………… 291

Урок 17. События и их обработка………………………………………………………… 293

17.1. Обработчики событий……………………………………………………………………………………………………. 293

17.1.1. Привязка обработчиков к событиям………………………………………………………………….. 293

17.1.2. Реализация обработчиков событий…………………………………………………………………… 294

17.1.2.1. Реализация обработчиков событий в виде функций………………………… 294

17.1.2.2. Реализация обработчиков событий в виде методов…………………………. 295

17.1.3. Удаление привязки обработчика к событию……………………………………………………. 297

17.1.3.1. Удаление вызовом метода removeEventListener()……………………………… 297

17.1.3.2. Удаление с помощью прерывателя……………………………………………………. 297

17.1.4. Альтернативные способы привязки обработчиков к событиям……………………… 298

17.1.4.1. Привязка в атрибутах тегов………………………………………………………………… 298

17.1.4.2. Обработка щелчков на гиперссылках……………………………………………….. 298

17.2. События, поддерживаемые элементами веб-страниц…………………………………………………. 299

17.3. Объект события. Классы событий и их свойства…………………………………………………………. 300

17.4. Упражнение. Слайдер, часть 1………………………………………………………………………………………. 303

17.5. Распространение события. Фазы события……………………………………………………………………. 308

17.6. Упражнение. Слайдер, часть 2………………………………………………………………………………………. 310

17.7. Обработка событий по умолчанию и ее отмена………………………………………………………….. 312

17.8. Упражнение. Слайдер, часть 3………………………………………………………………………………………. 313

17.9. Самостоятельное упражнение………………………………………………………………………………………. 314

Урок 18. Управление элементами веб-страниц……………………………………… 315

18.1. Получение доступа к элементам страницы………………………………………………………………….. 315

18.1.1. Доступ к элементам определенного типа…………………………………………………………. 315

18.1.2. Доступ к любому элементу страницы………………………………………………………………. 316

18.1.3. Доступ к родителю, соседям и потомкам………………………………………………………….. 318

18.2. Управление элементами веб-страницы………………………………………………………………………… 319

18.2.1. Работа с атрибутами тегов………………………………………………………………………………… 319

18.2.1.1. data-атрибуты и работа с ними………………………………………………………….. 320

18.2.2. Получение местоположения и размеров элементов веб-страниц…………………… 320

18.2.3. Прочие инструменты для управления элементами веб-страниц……………………. 321

18.3. Упражнение. Стильная полоса прокрутки…………………………………………………………………… 324

18.4. Управление стилями CSS……………………………………………………………………………………………….. 326

18.4.1. Управление стилевыми классами……………………………………………………………………… 326

18.4.2. Управление встроенными стилями……………………………………………………………………. 327

18.5. Изменение содержимого элементов………………………………………………………………………………. 328

18.5.1. Методы write() и writeln()…………………………………………………………………………………… 329

18.6. Создание элементов веб-страниц путем конструирования………………………………………… 330

18.7. Упражнение. Фотогалерея с лайтбоксом……………………………………………………………………… 334

18.8. Получение сведений о веб-странице…………………………………………………………………………….. 337

18.9. Самостоятельные упражнения………………………………………………………………………………………. 338

Урок 19. Графика и мультимедиа…………………………………………………………. 339

19.1. Получение сведений о графических изображениях…………………………………………………….. 339

19.2. Управление мультимедийными элементами………………………………………………………………… 340

19.2.1. Свойства………………………………………………………………………………………………………………. 340

19.2.2. Методы………………………………………………………………………………………………………………… 342

19.2.3. События……………………………………………………………………………………………………………….. 342

19.3. Упражнение. Стильный видеопроигрыватель……………………………………………………………… 343

19.4. Самостоятельное упражнение………………………………………………………………………………………. 346

Урок 20. Веб-формы и элементы управления……………………………………….. 347

20.1. Работа с элементами управления………………………………………………………………………………….. 347

20.1.1. Свойства, методы и события элементов управления………………………………………. 347

20.1.2. Получение и обработка введенного в элемент значения………………………………… 350

20.1.3. Программное создание и удаление пунктов списка………………………………………… 352

20.1.4. Индикатор процесса…………………………………………………………………………………………… 352

20.2. Свойства, методы и события веб-формы………………………………………………………………………. 353

20.3. Упражнение. Клиентское веб-приложение, формирующее CSS-код рамки, часть 1… 354

20.4. Валидация……………………………………………………………………………………………………………………….. 356

20.4.1. Валидация средствами HTML…………………………………………………………………………… 357

20.4.1.1. Вывод собственных сообщений об ошибках……………………………………. 357

20.4.2. Программная валидация…………………………………………………………………………………….. 359

20.4.3. Дополнительные инструменты валидации………………………………………………………. 360

20.5. Упражнение. Клиентское веб-приложение, формирующее CSS-код рамки, часть 2… 361

20.6. Диалоги……………………………………………………………………………………………………………………………. 362

20.7. Самостоятельные упражнения………………………………………………………………………………………. 365

Урок 21. Взаимодействие с веб-обозревателем……………………………………… 366

21.1. Работа с окном веб-обозревателя………………………………………………………………………………….. 366

21.1.1. Еще один способ записи веб-сценариев, манипулирующих элементами страницы         368

21.1.2. Предотвращение ухода с веб-страницы…………………………………………………………… 369

21.2. Работа с текущим интернет-адресом……………………………………………………………………………. 369

21.3. Получение сведений о клиентском компьютере и веб-обозревателе…………………………. 371

21.4. Вывод стандартных диалоговых окон…………………………………………………………………………. 371

21.5. Детектор видимости……………………………………………………………………………………………………….. 373

21.5.1. Область видимости и детектор видимости……………………………………………………….. 373

21.5.2. Создание детектора видимости…………………………………………………………………………. 374

21.5.3. Указание отслеживаемых элементов………………………………………………………………… 376

21.5.4. Отслеживание попадания элементов в область видимости……………………………. 376

21.6. Упражнение. Отложенная загрузка изображений……………………………………………………….. 377

21.7. Детектор изменения размеров……………………………………………………………………………………….. 379

21.7.1. Создание детектора изменения размеров…………………………………………………………. 379

21.7.2. Указание отслеживаемых элементов………………………………………………………………… 379

21.7.3. Отслеживание изменения размеров элементов………………………………………………… 380

21.8. Самостоятельное упражнение………………………………………………………………………………………. 382

Часть IV. Асинхронное и параллельное программирование      383

Урок 22. Таймеры и фоновые потоки…………………………………………………… 385

22.1. Таймеры, периодические и однократные……………………………………………………………………… 385

22.2. Упражнение. Отзывчивое веб-приложение, вариант 1………………………………………………… 386

22.3. Фоновые потоки………………………………………………………………………………………………………………. 390

22.3.1. Создание фонового потока………………………………………………………………………………… 390

22.3.2. Передача данных между потоками…………………………………………………………………… 390

22.3.3. Завершение фонового потока…………………………………………………………………………….. 391

22.4. Упражнение. Отзывчивое веб-приложение, вариант 2………………………………………………… 391

22.5. Самостоятельные упражнения………………………………………………………………………………………. 393

Урок 23. Промисы и асинхронные функции………………………………………… 394

23.1. Промисы…………………………………………………………………………………………………………………………… 394

23.1.1. Создание промисов…………………………………………………………………………………………….. 394

23.1.2. Обработка промисов…………………………………………………………………………………………… 395

23.1.3. Массовая обработка промисов…………………………………………………………………………. 397

23.1.4. Дополнительные инструменты для работы с промисами……………………………….. 398

23.2. Асинхронные функции……………………………………………………………………………………………………. 399

23.2.1. Асинхронные методы в классах………………………………………………………………………… 400

23.3. Оператор ожидания………………………………………………………………………………………………………… 401

23.4. Упражнение. Отзывчивое веб-приложение, вариант 3………………………………………………… 402

23.5. Самостоятельное упражнение………………………………………………………………………………………. 404

Урок 24. Асинхронные итераторы и генераторы………………………………….. 405

24.1. Асинхронные итераторы……………………………………………………………………………………………….. 405

24.2. Цикл перебора последовательности с ожиданием………………………………………………………. 406

24.3. Асинхронные генераторы………………………………………………………………………………………………. 407

24.4. Упражнение. Отзывчивое веб-приложение, вариант 4………………………………………………… 408

Часть V. Web API……………………………………………………………………………… 411

Урок 25. Работа с локальными файлами и перетаскивание………………….. 413

25.1. Работа с локальными файлами……………………………………………………………………………………… 413

25.1.1. Получение сведений о файлах…………………………………………………………………………… 413

25.1.2. Считывание текстовых файлов………………………………………………………………………….. 414

25.1.3. Считывание графических, аудио- и видеофайлов……………………………………………. 415

25.2. Упражнение. Предварительный просмотр выбранного графического файла………….. 416

25.3. Перетаскивание………………………………………………………………………………………………………………. 417

25.3.1. Превращение элемента-источника в перетаскиваемый………………………………….. 417

25.3.2. Задание перемещаемых данных в источнике…………………………………………………… 417

25.3.3. Указание допустимых операций……………………………………………………………………….. 418

25.3.4. Подготовка элемента-приемника………………………………………………………………………. 419

25.3.5. Завершение перетаскивания………………………………………………………………………………. 420

25.4. Упражнение. Экзаменатор…………………………………………………………………………………………….. 421

25.5. Перетаскивание файлов в поле выбора файлов…………………………………………………………… 423

25.6. Самостоятельные упражнения………………………………………………………………………………………. 424

Урок 26. Долговременное хранение данных…………………………………………. 426

26.1. Хранилища: локальное и сессионное…………………………………………………………………………… 426

26.2. Упражнение. Передача данных между веб-страницами…………………………………………….. 427

26.3. Cookie………………………………………………………………………………………………………………………………. 428

26.4. Самостоятельное упражнение………………………………………………………………………………………. 431

Урок 27. Программная графика……………………………………………………………. 432

27.1. Холст………………………………………………………………………………………………………………………………… 432

27.2. Рисование прямоугольников………………………………………………………………………………………….. 433

27.3. Указание основных параметров графики…………………………………………………………………….. 433

27.3.1. Цвета линий и заливок………………………………………………………………………………………… 433

27.3.2. Параметры тени………………………………………………………………………………………………….. 434

27.4. Вывод текста…………………………………………………………………………………………………………………… 435

27.5. Упражнение. Столбчатая диаграмма…………………………………………………………………………… 437

27.6. Рисование сложных фигур……………………………………………………………………………………………… 439

27.6.1. Начало и завершение рисования………………………………………………………………………. 439

27.6.2. Перемещение пера………………………………………………………………………………………………. 440

27.6.3. Рисование прямых линий……………………………………………………………………………………. 440

27.6.4. Замыкание контура…………………………………………………………………………………………….. 441

27.6.5. Указание параметров линий………………………………………………………………………………. 441

27.6.6. Рисование дуг………………………………………………………………………………………………………. 443

27.6.7. Рисование кривых Безье……………………………………………………………………………………… 444

27.6.8. Рисование прямоугольников………………………………………………………………………………. 446

27.6.9. Альтернативный способ рисования сложных фигур……………………………………….. 447

27.7. Градиенты и графические закраски………………………………………………………………………………. 448

27.7.1. Линейные градиенты………………………………………………………………………………………….. 448

27.7.2. Радиальные градиенты………………………………………………………………………………………. 450

27.7.3. Угловые градиенты…………………………………………………………………………………………….. 451

27.7.4. Графическая закраска………………………………………………………………………………………… 452

27.8. Преобразования………………………………………………………………………………………………………………. 453

27.9. Вывод сторонних изображений…………………………………………………………………………………….. 454

27.10. Управление композицией…………………………………………………………………………………………….. 455

27.11. Создание масок…………………………………………………………………………………………………………….. 457

27.12. Сохранение и восстановление состояния холста……………………………………………………… 458

27.13. Упражнение. Рисование цветка…………………………………………………………………………………… 458

27.14. Самостоятельные упражнения……………………………………………………………………………………. 460

Урок 28. Загрузка данных с веб-сервера………………………………………………. 461

28.1. Отправка клиентского запроса на загрузку данных……………………………………………………. 461

28.1.1. Параметры клиентского запроса………………………………………………………………………. 461

28.1.1.1. Задание заголовков клиентского запроса…………………………………………. 464

28.1.2. Передача данных веб-серверу…………………………………………………………………………… 465

28.1.2.1. Передача данных HTTP-методом GET……………………………………………… 465

28.1.2.2. Передача данных HTTP-методом POST……………………………………………. 468

Кодирование данных методом application/x-www-form-urlencoded………… 468

Кодирование данных методом multipart/form-data……………………………………. 468

28.1.3. Использование объектов запросов……………………………………………………………………. 470

28.2. Обработка серверных ответов………………………………………………………………………………………. 471

28.2.1. Получение сведений о серверном ответе………………………………………………………….. 471

28.2.2. Получение данных, отправленных веб-сервером……………………………………………. 472

28.3. Упражнение. Сборка веб-страницы из отдельных частей………………………………………….. 473

28.4. Формат JSON…………………………………………………………………………………………………………………… 474

28.5. Упражнение. Программное создание веб-страницы на основе
загруженных JSON-данных……………………………………………………………………………………………. 476

28.6. Работа с интернет-адресами………………………………………………………………………………………….. 477

28.7. Самостоятельное упражнение………………………………………………………………………………………. 478

Часть VI. Разработка веб-приложений…………………………………. 479

Урок 29. Разработка традиционных веб-приложений. Платформа Node.js 481

29.1. Упражнение. Проект и манифест Node-приложения……………………………………………………. 482

29.2. Упражнение. Простейшее веб-приложение, выдающее приветствие.
Сценарии проекта…………………………………………………………………………………………………………… 483

29.3. Упражнение. Маршрутизатор и контроллеры…………………………………………………………….. 486

29.3.1. Теория………………………………………………………………………………………………………………….. 487

29.3.2. Практика………………………………………………………………………………………………………………. 487

29.4. Упражнение. Обработка GET-параметров…………………………………………………………………… 496

29.5. Упражнение. Обработка POST-параметров…………………………………………………………………. 499

29.6. Самостоятельное упражнение………………………………………………………………………………………. 505

Урок 30. Двухзвенные веб-приложения. Разработка бэкендов……………… 506

30.1. Введение в двухзвенные веб-приложения и REST……………………………………………………….. 506

30.1.1. Двухзвенные веб-приложения……………………………………………………………………………. 506

30.1.2. REST…………………………………………………………………………………………………………………….. 507

30.2. Упражнение. Разработка бэкенда…………………………………………………………………………………. 507

30.3. Поддержка межхостовых запросов………………………………………………………………………………. 512

30.3.1. Простые межхостовые запросы…………………………………………………………………………. 512

30.3.2. Расширенные межхостовые запросы………………………………………………………………… 513

30.4. Упражнение. Реализация поддержки межхостовых запросов……………………………………. 514

Урок 31. Разработка фронтендов, часть 1. Компоненты……………………….. 516

31.1. Принципы разработки фронтендов……………………………………………………………………………….. 516

31.2. Упражнение. Базовый класс компонента……………………………………………………………………… 517

31.3. Упражнение. Компонент перечня изображений………………………………………………………….. 518

31.4. Упражнение. Компонент отдельной позиции перечня изображений…………………………. 521

Урок 32. Разработка фронтендов, часть 2. Маршрутизация………………….. 524

32.1. Маршрутизация на стороне клиента……………………………………………………………………………. 524

32.2. Упражнение. Маршрутизация и компонент выбранного изображения…………………….. 525

32.3. Упражнение. Добавление изображений……………………………………………………………………….. 528

Заключение………………………………………………………………………………………….. 531

Приложения…………………………………………………………………………………… 533

Приложение 1. Приоритет операторов………………………………………………….. 535

Приложение 2. Node.js: подготовка к работе………………………………………… 537

П2.1. Установка Node.js…………………………………………………………………………………………………………… 537

П2.2. Проверка работоспособности Node.js………………………………………………………………………….. 543

Приложение 3. Веб-сервер http-server: установка и использование………. 544

П3.1. Установка http-server……………………………………………………………………………………………………… 544

П3.2. Запуск веб-сайта с помощью http-server………………………………………………………………………. 544

П3.3. Останов http-server…………………………………………………………………………………………………………. 545

Приложение 4. Устаревшие программные инструменты JavaScript, применяющиеся до сих пор…………………………………………………………………………………………………………….. 546

П4.1. Условное присваивание и выбор………………………………………………………………………………….. 546

П4.2. Необязательные параметры функций………………………………………………………………………….. 547

П4.3. Функции с произвольным количеством параметров…………………………………………………… 547

П4.4. Объявление классов……………………………………………………………………………………………………….. 548

П4.4.1. Объявление функции-конструктора………………………………………………………………… 548

П4.4.2. Создание свойств и методов…………………………………………………………………………….. 549

П4.4.2.1. Объявление свойств и методов в функции-конструкторе………………… 549

П4.4.2.2. Объявление свойств и методов в прототипе……………………………………… 550

П4.4.3. Создание динамических свойств……………………………………………………………………… 551

П4.4.4. Создание статических свойств и методов………………………………………………………. 551

П4.4.5. Наследование классов……………………………………………………………………………………… 552

П4.5. Загрузка данных с веб-сервера…………………………………………………………………………………….. 553

П4.5.1. Подготовка объекта AJAX………………………………………………………………………………… 554

П4.5.2. Указание интернет-адреса загружаемого файла…………………………………………… 554

П4.5.3. Получение загруженного файла………………………………………………………………………. 554

П4.5.4. Отправка веб-серверу запроса на получение файла……………………………………… 555

П4.5.5. Отправка данных веб-серверу в POST-параметрах……………………………………….. 555

П4.5.6. Синхронная загрузка файлов по технологии AJAX……………………………………….. 556

П4.6. Работа с GET-параметрами…………………………………………………………………………………………… 556

Приложение 5. Описание файлового архива………………………………………… 558

Предметный указатель…………………………………………………………………………. 559

Дронов Владимир Александрович, профессиональный программист, писатель и журналист, работает с компьютерами с 1987 года. Автор более 30 популярных компьютерных книг, в том числе «Django 2.1. Практика создания веб-сайтов на Python», “HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера“, «Python 3. Самое необходимое», «Python 3 и PyQt 5. Разработка приложений», “Laravel. Быстрая разработка современных динамических Web-сайтов на PHP, MySQL, HTML и CSS“, “Angular 4. Быстрая разработка сверхдинамических Web-сайтов на TypeScript и PHP” и книг по продуктам Adobe Flash и Adobe Dreamweaver различных версий. Его статьи публикуются в журналах “Мир ПК” и “ИнтерФейс” (Израиль) и интернет-порталах “IZ City” и “TheVista.ru”.

Summary
Aggregate Rating
3.5 based on 2 votes
Добавить комментарий