Mundarija | Введение ………………………………………………………………………………………………………….. 15
Структура книги …………………………………………………………………………………………………………….. 15
Типографские соглашения ……………………………………………………………………………………………… 17
Глава 1. Редактор Visual Studio Code ……………………………………………………………… 19
1.1. Установка VS Code ………………………………………………………………………………………………….. 19
1.2. Настройка редактора ……………………………………………………………………………………………….. 23
1.3. Смена цветовой темы, тем значков файлов и продукта ……………………………………………… 25
1.4. Структура окна редактора ………………………………………………………………………………………… 27
1.4.1. Главное меню ………………………………………………………………………………………………… 28
1.4.2. Боковая панель и панель действий ………………………………………………………………….. 32
1.4.3. Строка состояния …………………………………………………………………………………………… 33
1.4.4. Нижняя панель ………………………………………………………………………………………………. 34
1.4.5. Палитра команд ……………………………………………………………………………………………… 34
1.5. Работа с файлами и каталогами ………………………………………………………………………………… 35
1.5.1. Создание и сохранение файла …………………………………………………………………………. 35
1.5.2. Закрытие вкладки с файлом ……………………………………………………………………………. 36
1.5.3. Открытие файла …………………………………………………………………………………………….. 37
1.5.4. Открытие каталога …………………………………………………………………………………………. 37
1.6. Отображение содержимого нескольких файлов одновременно ………………………………….. 39
1.7. Live Server: автоматическое обновление веб-страницы ……………………………………………… 41
1.8. Emmet: ускорение набора HTML-кода ……………………………………………………………………… 42
1.8.1. Вставка структуры HTML-документа ……………………………………………………………… 42
1.8.2. Вставка HTML-комментария ………………………………………………………………………….. 43
1.8.3. Теги из секции заголовка (<head>) …………………………………………………………………. 43
1.8.4. Основные теги из секции тела (<body>)………………………………………………………….. 44
1.8.5. Добавление текста………………………………………………………………………………………….. 46
1.8.6. Добавление параметров тегов …………………………………………………………………………. 47
1.8.7. Формы и элементы управления ………………………………………………………………………. 48
1.8.8. Таблицы ………………………………………………………………………………………………………… 49
1.8.9. Списки …………………………………………………………………………………………………………… 50
1.8.10. Вставка сразу нескольких тегов…………………………………………………………………….. 51
https://t.me/it_boooks/2
4 Оглавление
1.9. Emmet: ускорение набора CSS-кода ………………………………………………………………………….. 52
1.9.1. Форматирование шрифта ……………………………………………………………………………….. 52
1.9.2. Форматирование текста ………………………………………………………………………………….. 55
1.9.3. Отступы ………………………………………………………………………………………………………… 57
1.9.4. Рамки …………………………………………………………………………………………………………….. 58
1.9.5. Фон элемента …………………………………………………………………………………………………. 60
1.9.6. Списки …………………………………………………………………………………………………………… 61
1.9.7. Таблицы ………………………………………………………………………………………………………… 62
1.9.8. Вид курсора …………………………………………………………………………………………………… 62
1.9.9. Форматирование блоков …………………………………………………………………………………. 62
1.9.10. Flex-контейнеры …………………………………………………………………………………………… 64
1.9.11. CSS Grid ………………………………………………………………………………………………………. 66
1.9.12. Многоколоночный текст ………………………………………………………………………………. 68
1.9.13. Эффекты ……………………………………………………………………………………………………… 68
1.9.14. Анимация с двумя состояниями ……………………………………………………………………. 69
1.9.15. Анимация с несколькими состояниями………………………………………………………….. 69
1.9.16. Двумерные трансформации ………………………………………………………………………….. 70
1.9.17. Трехмерные трансформации …………………………………………………………………………. 71
1.9.18. Прочие атрибуты и правила ………………………………………………………………………….. 71
1.9.19. Ввод числового значения атрибута ……………………………………………………………….. 73
1.9.20. Добавление вендорных префиксов ………………………………………………………………… 73
1.10. Всплывающие подсказки при вводе………………………………………………………………………… 74
1.11. Пользовательские фрагменты кода …………………………………………………………………………. 75
1.11.1. В Emmet……………………………………………………………………………………………………… 75
1.11.2. В редакторе VS Code ………………………………………………………………………………….. 77
1.12. Работа с курсорами и выделениями ………………………………………………………………………… 82
1.13. Дублирование, перемещение и удаление строк ……………………………………………………….. 83
1.14. Сворачивание и разворачивание блоков кода ………………………………………………………….. 84
1.15. Изменение регистра символов ………………………………………………………………………………… 84
1.16. Изменение масштаба ……………………………………………………………………………………………… 85
1.17. Полноэкранный режим …………………………………………………………………………………………… 85
1.18. Форматирование кода ……………………………………………………………………………………………. 85
1.19. Полезные расширения ……………………………………………………………………………………………. 86
Глава 2. Node.js: первые шаги ………………………………………………………………………… 88
2.1. Установка Node.js ……………………………………………………………………………………………………. 88
2.2. Работа с командной строкой …………………………………………………………………………………….. 92
2.3. Первая программа на JavaScript ……………………………………………………………………………….. 94
2.4. Вкладка Терминал в редакторе VS Code ……………………………………………………………………. 95
2.5. NPM (Node Package Manager) …………………………………………………………………………………… 97
2.5.1. Создание пакета и добавление файла package.json …………………………………………… 98
2.5.2. Установка пакетов ……………………………………………………………………………………….. 101
2.5.3. Обновление и удаление пакетов ……………………………………………………………………. 103
2.5.4. Добавление и запуск скриптов ………………………………………………………………………. 104
2.6. Структура программы ……………………………………………………………………………………………. 108
2.7. Комментарии в JavaScript ………………………………………………………………………………………. 109
2.8. Интерактивный режим …………………………………………………………………………………………… 111
2.9. Вывод результатов работы программы …………………………………………………………………… 112
Оглавление 5
2.10. Получение данных из командной строки ………………………………………………………………. 115
2.11. Завершение выполнения программы …………………………………………………………………….. 117
2.12. Получение версии Node.js …………………………………………………………………………………….. 117
Глава 3. Переменные и типы данных …………………………………………………………… 119
3.1. Именование переменных ……………………………………………………………………………………….. 119
3.2. Объявление переменной ………………………………………………………………………………………… 120
3.3. Инициализация переменной и присваивание значения …………………………………………….. 120
3.4. Ключевые слова var и let ………………………………………………………………………………………… 121
3.5. Типы данных в языке JavaScript ……………………………………………………………………………… 123
3.6. Проверка существования переменной …………………………………………………………………….. 124
3.7. Преобразование типов данных ……………………………………………………………………………….. 125
3.8. Классы-"обертки" над элементарными типами ……………………………………………………….. 127
3.9. Константы …………………………………………………………………………………………………………….. 128
3.10. Области видимости переменных …………………………………………………………………………… 129
3.11. Вывод значений переменных………………………………………………………………………………… 132
Глава 4. Операторы и циклы ………………………………………………………………………… 133
4.1. Математические операторы ……………………………………………………………………………………. 133
4.2. Побитовые операторы ……………………………………………………………………………………………. 135
4.3. Оператор запятая …………………………………………………………………………………………………… 136
4.4. Операторы сравнения …………………………………………………………………………………………….. 137
4.5. Оператор нулевого слияния ……………………………………………………………………………………. 139
4.6. Операторы присваивания ……………………………………………………………………………………….. 139
4.7. Приоритет выполнения операторов ………………………………………………………………………… 140
4.8. Оператор ветвления if…else ……………………………………………………………………………………. 141
4.9. Оператор ?: …………………………………………………………………………………………………………… 147
4.10. Оператор выбора switch ……………………………………………………………………………………….. 148
4.11. Цикл for ………………………………………………………………………………………………………………. 151
4.12. Цикл while……………………………………………………………………………………………………………. 153
4.13. Цикл do…while……………………………………………………………………………………………………… 154
4.14. Цикл for…in …………………………………………………………………………………………………………. 155
4.15. Цикл for…of …………………………………………………………………………………………………………. 157
4.16. Оператор continue: переход на следующую итерацию цикла ………………………………….. 157
4.17. Оператор break: прерывание цикла ……………………………………………………………………….. 158
Глава 5. Числа ……………………………………………………………………………………………….. 159
5.1. Указание значений …………………………………………………………………………………………………. 159
5.2. Класс Number ………………………………………………………………………………………………………… 160
5.3. Математические константы ……………………………………………………………………………………. 164
5.4. Основные методы для работы с числами ………………………………………………………………… 165
5.5. Округление чисел ………………………………………………………………………………………………….. 166
5.6. Тригонометрические функции ……………………………………………………………………………….. 166
5.7. Преобразование строки в число ……………………………………………………………………………… 167
5.8. Преобразование числа в строку ………………………………………………………………………………. 168
5.9. Генерация псевдослучайных чисел …………………………………………………………………………. 171
5.10. Бесконечность и значение NaN …………………………………………………………………………….. 171
5.11. Тип данных bigint ………………………………………………………………………………………………… 172
6 Оглавление
Глава 6. Массивы и множества …………………………………………………………………….. 175
6.1. Инициализация массива …………………………………………………………………………………………. 175
6.2. Получение и изменение элемента массива ………………………………………………………………. 177
6.3. Определение размера массива ………………………………………………………………………………… 179
6.4. Многомерные массивы ………………………………………………………………………………………….. 179
6.5. Создание копии массива ………………………………………………………………………………………… 181
6.6. Объединение массивов …………………………………………………………………………………………… 182
6.7. Перебор элементов массива ……………………………………………………………………………………. 182
6.8. Добавление и удаление элементов массива ……………………………………………………………… 183
6.9. "Переворачивание" массива …………………………………………………………………………………… 185
6.10. Сортировка массива …………………………………………………………………………………………….. 185
6.11. Получение части массива ……………………………………………………………………………………… 186
6.12. Преобразование массива ………………………………………………………………………………………. 187
6.13. Поиск элемента в массиве …………………………………………………………………………………….. 189
6.14. Фильтрация массива …………………………………………………………………………………………….. 190
6.15. Методы, возвращающие итераторы ………………………………………………………………………. 191
6.16. Ассоциативные массивы ………………………………………………………………………………………. 192
6.17. Класс Map: словарь………………………………………………………………………………………………. 193
6.17.1. Создание объекта ……………………………………………………………………………………… 193
6.17.2. Добавление элементов и изменение значения …………………………………………….. 194
6.17.3. Получение значения по ключу …………………………………………………………………… 194
6.17.4. Проверка наличия ключа …………………………………………………………………………… 194
6.17.5. Определение размера массива …………………………………………………………………… 194
6.17.6. Удаление элементов ………………………………………………………………………………….. 195
6.17.7. Методы класса Map, возвращающие итераторы …………………………………………. 195
6.17.8. Перебор элементов словаря ……………………………………………………………………….. 196
6.18. Класс Set: множество ……………………………………………………………………………………………. 197
6.18.1. Создание объекта ……………………………………………………………………………………… 197
6.18.2. Добавление элементов ………………………………………………………………………………. 197
6.18.3. Проверка наличия элемента ………………………………………………………………………. 198
6.18.4. Определение размера множества ……………………………………………………………….. 198
6.18.5. Удаление элементов ………………………………………………………………………………….. 198
6.18.6. Методы класса Set, возвращающие итераторы ……………………………………………. 199
6.18.7. Перебор элементов множества…………………………………………………………………… 199
6.18.8. Преобразование множества в массив …………………………………………………………. 200
6.18.9. Операции с двумя множествами ………………………………………………………………… 200
Глава 7. Строки …………………………………………………………………………………………….. 202
7.1. Инициализация строк …………………………………………………………………………………………….. 202
7.2. Специальные символы в строке ……………………………………………………………………………… 204
7.3. Строки в обратных кавычках (шаблоны строк) ……………………………………………………….. 205
7.4. Неформатированные строки …………………………………………………………………………………… 206
7.5. Конкатенация строк ……………………………………………………………………………………………….. 206
7.6. Определение длины строки ……………………………………………………………………………………. 207
7.7. Обращение к отдельному символу в строке …………………………………………………………….. 207
7.8. Изменение регистра символов ………………………………………………………………………………… 208
7.9. Получение фрагмента строки …………………………………………………………………………………. 209
Оглавление 7
7.10. Сравнение строк ………………………………………………………………………………………………….. 209
7.11. Поиск и замена в строке ……………………………………………………………………………………….. 210
7.12. Преобразование строки в массив ………………………………………………………………………….. 212
7.13. URL-кодирование строк ……………………………………………………………………………………….. 213
7.14. Повтор строки ……………………………………………………………………………………………………… 213
7.15. Выполнение команд, содержащихся в строке ………………………………………………………… 214
Глава 8. Регулярные выражения ………………………………………………………………….. 215
8.1. Создание регулярного выражения ………………………………………………………………………….. 215
8.2. Методы класса String ……………………………………………………………………………………………… 216
8.3. Методы класса RegExp …………………………………………………………………………………………… 222
8.4. Свойства класса RegExp …………………………………………………………………………………………. 224
8.5. Синтаксис регулярных выражений …………………………………………………………………………. 226
8.5.1. Экранирование специальных символов …………………………………………………………. 226
8.5.2. Метасимволы ……………………………………………………………………………………………….. 228
8.5.3. Стандартные классы …………………………………………………………………………………….. 230
8.5.4. Квантификаторы…………………………………………………………………………………………… 231
8.5.5. "Жадность" квантификаторов ……………………………………………………………………….. 231
8.5.6. Группы ………………………………………………………………………………………………………… 232
8.5.7. Обратные ссылки …………………………………………………………………………………………. 235
8.5.8. Просмотр вперед и назад ………………………………………………………………………………. 235
Глава 9. Работа с датой и временем ………………………………………………………………. 238
9.1. Получение текущей даты и времени ……………………………………………………………………….. 238
9.2. Указание произвольных значений даты и времени ………………………………………………….. 238
9.3. Разбор строки с датой и временем ………………………………………………………………………….. 239
9.4. Преобразование даты в строку ……………………………………………………………………………….. 240
9.5. Получение и изменение значений компонентов даты и времени ………………………………. 241
9.6. Форматированный вывод текущей даты и времени …………………………………………………. 243
9.7. Таймеры ………………………………………………………………………………………………………………… 244
9.8. Измерение времени выполнения кода …………………………………………………………………….. 247
Глава 10. Пользовательские функции ………………………………………………………….. 249
10.1. Создание функции и ее вызов ……………………………………………………………………………….. 249
10.2. Расположение определений функций ……………………………………………………………………. 251
10.3. Вложенные функции ……………………………………………………………………………………………. 252
10.4. Замыкание …………………………………………………………………………………………………………… 252
10.5. Класс Function ……………………………………………………………………………………………………… 253
10.6. Функции с произвольным числом параметров ………………………………………………………. 255
10.6.1. Объект arguments ……………………………………………………………………………………… 255
10.6.2. Оператор REST …………………………………………………………………………………………. 256
10.7. Способы передачи параметров в функцию ……………………………………………………………. 256
10.8. Необязательные параметры ………………………………………………………………………………….. 257
10.9. Анонимные функции ……………………………………………………………………………………………. 258
10.10. Стрелочные функции (лямбда-выражения) ………………………………………………………….. 260
10.11. Функции-генераторы ………………………………………………………………………………………….. 261
10.12. Рекурсия ……………………………………………………………………………………………………………. 263
8 Оглавление
Глава 11. Классы и объекты …………………………………………………………………………. 264
11.1. Объекты ………………………………………………………………………………………………………………. 264
11.1.1. Создание объекта с помощью фигурных скобок …………………………………………. 264
11.1.2. Свойства объекта ………………………………………………………………………………………. 265
11.1.3. Распаковка объекта …………………………………………………………………………………… 268
11.1.4. Методы объекта ………………………………………………………………………………………… 270
11.1.5. Указатель this ……………………………………………………………………………………………. 272
11.1.6. Setter и getter …………………………………………………………………………………………….. 274
11.1.7. Свойство __proto__ …………………………………………………………………………………… 276
11.1.8. Атрибуты свойств и метод Object.create() ………………………………………………….. 278
11.1.9. Получение значений атрибутов свойств …………………………………………………….. 280
11.1.10. Методы defineProperty() и defineProperties() …………………………………………….. 282
11.1.11. Ограничение доступа к объекту ……………………………………………………………….. 284
11.1.12. Получение списка имен свойств ………………………………………………………………. 287
11.1.13. Перебор свойств объекта …………………………………………………………………………. 289
11.1.14. Проверка существования свойств и методов …………………………………………….. 290
11.1.15. Свойства с типом symbol …………………………………………………………………………. 291
11.1.16. Сравнение объектов ………………………………………………………………………………… 292
11.1.17. Создание копии объекта ………………………………………………………………………….. 293
11.1.18. Объединение объектов …………………………………………………………………………….. 295
11.1.19. Удаление свойства ………………………………………………………………………………….. 296
11.2. Создание объекта с помощью класса Object ………………………………………………………….. 298
11.3. Создание класса (старый стиль) ……………………………………………………………………………. 299
11.3.1. Функция в качестве конструктора класса …………………………………………………… 300
11.3.2. Прототипы ……………………………………………………………………………………………….. 301
11.3.3. Свойство constructor …………………………………………………………………………………. 303
11.3.4. Наследование ……………………………………………………………………………………………. 303
11.3.5. Переопределение методов …………………………………………………………………………. 305
11.3.6. Статические свойства и методы …………………………………………………………………. 307
11.4. Создание класса (новый стиль) …………………………………………………………………………….. 307
11.4.1. Инструкция class ………………………………………………………………………………………. 308
11.4.2. Конструктор класса …………………………………………………………………………………… 308
11.4.3. Наследование ……………………………………………………………………………………………. 309
11.4.4. Переопределение методов …………………………………………………………………………. 310
11.4.5. Публичные свойства …………………………………………………………………………………. 311
11.4.6. Приватные свойства и методы …………………………………………………………………… 312
11.4.7. Статические свойства и методы …………………………………………………………………. 313
11.5. Оператор instanceof ……………………………………………………………………………………………… 315
11.6. Массивоподобные объекты (псевдомассивы) ………………………………………………………… 316
11.7. Итераторы …………………………………………………………………………………………………………… 317
11.8. Методы-генераторы ……………………………………………………………………………………………… 319
11.9. Пространства имен ………………………………………………………………………………………………. 320
11.10. Класс Proxy ………………………………………………………………………………………………………… 322
11.10.1. Создание proxy-объекта …………………………………………………………………………… 322
11.10.2. Ограничение доступа к свойствам объекта ……………………………………………….. 324
11.10.3. Ограничение проверки существования свойства ………………………………………. 327
11.10.4. Ограничение получения списка свойств и их атрибутов ……………………………. 328
11.10.5. Ограничение добавления свойства и изменения атрибутов ……………………….. 330
Оглавление 9
11.10.6. Ограничение удаления свойства ………………………………………………………………. 331
11.10.7. Ограничение нерасширяемости объекта …………………………………………………… 332
11.10.8. Ограничение доступа к прототипу ……………………………………………………………. 333
11.10.9. Перехват создания объекта………………………………………………………………………. 334
11.10.10. Перехват вызова функции ……………………………………………………………………… 335
11.10.11. Отключаемый proxy-объект …………………………………………………………………… 335
11.11. Класс Reflect ………………………………………………………………………………………………………. 336
11.12. Формат JSON: преобразование объекта в строку и обратно …………………………………. 340
Глава 12. Модули…………………………………………………………………………………………… 345
12.1. Модули CommonJS ………………………………………………………………………………………………. 345
12.1.1. Подключение встроенных модулей ……………………………………………………………. 345
12.1.2. Получение списка встроенных модулей……………………………………………………… 346
12.1.3. Подключение пользовательских модулей …………………………………………………… 347
12.1.4. Кэширование модулей ………………………………………………………………………………. 350
12.1.5. Подключение каталогов…………………………………………………………………………….. 352
12.1.6. Подключение модулей и пакетов из каталога node_modules………………………… 353
12.1.7. Переменная окружения NODE_PATH ………………………………………………………… 354
12.1.8. Экспорт идентификаторов из модуля …………………………………………………………. 355
12.1.9. Объект module ………………………………………………………………………………………….. 357
12.2. Модули ECMAScript (ESM) ………………………………………………………………………………….. 358
12.2.1. Основные отличия модулей ECMAScript от модулей CommonJS ………………… 358
12.2.2. Подключение встроенных модулей ……………………………………………………………. 359
12.2.3. Получение списка встроенных модулей……………………………………………………… 360
12.2.4. Подключение пользовательских модулей …………………………………………………… 361
12.2.5. Кэширование модулей ………………………………………………………………………………. 363
12.2.6. Подключение модулей и пакетов из каталога node_modules………………………… 364
12.2.7. Экспорт идентификаторов из модуля …………………………………………………………. 364
12.2.8. Экспорт идентификатора по умолчанию ……………………………………………………. 367
12.2.9. Реэкспорт …………………………………………………………………………………………………. 369
12.2.10. Динамический импорт …………………………………………………………………………….. 371
12.2.11. Подключение модулей CommonJS……………………………………………………………. 373
12.2.12. Подключение модуля ECMAScript внутри модуля CommonJS …………………… 374
12.2.13. Подключение модулей в формате JSON …………………………………………………… 375
12.3. Свойства main, exports и imports в файле package.json……………………………………………. 376
12.4. Переменные уровня приложения ………………………………………………………………………….. 385
Глава 13. Обработка ошибок ………………………………………………………………………… 387
13.1. Типы ошибок……………………………………………………………………………………………………….. 387
13.2. Исключения и их обработка. Инструкция try…catch…finally …………………………………… 389
13.3. Класс Error: объекты исключения ………………………………………………………………………… 392
13.4. Оператор throw: генерирование исключений …………………………………………………………. 393
13.5. Поиск ошибок в программе ………………………………………………………………………………….. 394
13.6. Метод assert() ………………………………………………………………………………………………………. 396
13.7. Отладка программы в редакторе VS Code ……………………………………………………………… 396
13.8. Строгий режим …………………………………………………………………………………………………….. 402
13.9. Установка и настройка Prettier ……………………………………………………………………………… 407
13.10. Установка и настройка ESLint …………………………………………………………………………….. 415
10 Оглавление
Глава 14. Асинхронность ………………………………………………………………………………. 421
14.1. Объект класса Promise………………………………………………………………………………………….. 421
14.1.1. Создание объекта класса Promise ………………………………………………………………. 421
14.1.2. Обработка изменения статуса ……………………………………………………………………. 423
14.1.3. Массовая обработка объектов класса Promise …………………………………………….. 425
14.2. Ключевые слова async и await ………………………………………………………………………………. 429
14.3. Цикл for await…of …………………………………………………………………………………………………. 431
14.4. Асинхронные итераторы ………………………………………………………………………………………. 433
14.5. Асинхронные методы-генераторы ………………………………………………………………………… 434
14.6. Обработка событий ………………………………………………………………………………………………. 435
14.6.1. Генерирование событий …………………………………………………………………………….. 436
14.6.2. Назначение обработчиков событий ……………………………………………………………. 437
14.6.3. Удаление обработчиков событий ……………………………………………………………….. 440
14.6.4. Асинхронная обработка событий……………………………………………………………….. 441
Глава 15. Класс Buffer: массив байтов фиксированного размера ………………… 443
15.1. Создание массива байтов ……………………………………………………………………………………… 443
15.2. Определение размера массива ………………………………………………………………………………. 447
15.3. Получение и изменение значения по индексу ………………………………………………………… 448
15.4. Запись и чтение данных ……………………………………………………………………………………….. 448
15.5. Создание копии массива ………………………………………………………………………………………. 451
15.6. Получение части массива ……………………………………………………………………………………… 452
15.7. Объединение массивов …………………………………………………………………………………………. 453
15.8. Изменение порядка следования байтов …………………………………………………………………. 453
15.9. Перебор элементов массива ………………………………………………………………………………….. 454
15.10. Методы, возвращающие итераторы …………………………………………………………………….. 455
15.11. Сравнение массивов …………………………………………………………………………………………… 456
15.12. Проверка наличия значения в массиве ………………………………………………………………… 457
15.13. Преобразование массива в строку или в другой объект ………………………………………… 459
15.14. Преобразование кодировок …………………………………………………………………………………. 460
Глава 16. Чтение и запись файлов ………………………………………………………………… 462
16.1. Указание пути к файлу или каталогу …………………………………………………………………….. 462
16.2. Модуль path: преобразование путей ……………………………………………………………………… 466
16.3. Запись в файл с указанием пути к файлу ……………………………………………………………….. 470
16.4. Чтение из файла с указанием пути к файлу ……………………………………………………………… 480
16.5. Открытие и закрытие файла …………………………………………………………………………………. 485
16.6. Режимы открытия файла ………………………………………………………………………………………. 489
16.7. Запись в файл с указанием дескриптора ………………………………………………………………… 491
16.8. Чтение из файла с указанием дескриптора …………………………………………………………….. 500
16.9. Изменение размера файла …………………………………………………………………………………….. 510
16.10. Дескрипторы стандартных потоков ввода/вывода ……………………………………………….. 514
Глава 17. Файловые потоки ввода/вывода …………………………………………………… 516
17.1. Класс WriteStream: поток вывода в файл ……………………………………………………………….. 516
17.1.1. Создание потока вывода ……………………………………………………………………………. 516
17.1.2. Запись данных ………………………………………………………………………………………….. 518
17.1.3. События потока вывода …………………………………………………………………………….. 519
Оглавление 11
17.2. Класс ReadStream: поток ввода из файла……………………………………………………………….. 520
17.2.1. Создание потока ввода ………………………………………………………………………………. 520
17.2.2. Чтение данных ………………………………………………………………………………………….. 521
17.2.3. События потока ввода ……………………………………………………………………………….. 522
17.2.4. Метод pipe() ……………………………………………………………………………………………… 523
17.2.5. Чтение файла, сохраненного в русской кодировке ……………………………………… 524
17.3. Перенаправление стандартных потоков ввода/вывода …………………………………………… 524
Глава 18. Работа с файловой системой …………………………………………………………. 526
18.1. Переименование и перемещение файлов ………………………………………………………………. 526
18.2. Копирование файлов ……………………………………………………………………………………………. 529
18.3. Удаление файлов …………………………………………………………………………………………………. 532
18.4. Получение сведений о файлах и каталогах ……………………………………………………………. 535
18.5. Права доступа к файлу и каталогу…………………………………………………………………………. 542
18.6. Проверка существования файлов и каталогов ……………………………………………………….. 544
18.7. Создание каталогов ……………………………………………………………………………………………… 545
18.8. Создание временных каталогов …………………………………………………………………………….. 547
18.9. Удаление каталогов ……………………………………………………………………………………………… 548
18.10. Перебор элементов в каталоге …………………………………………………………………………….. 551
18.11. Отслеживание изменения файла или каталога ……………………………………………………… 556
Глава 19. Веб-сервер на Node.js …………………………………………………………………….. 560
19.1. Создание и запуск веб-сервера ……………………………………………………………………………… 560
19.2. Объект запроса …………………………………………………………………………………………………….. 562
19.3. Объект ответа ………………………………………………………………………………………………………. 563
19.4. Отправка файла в качестве серверного ответа ……………………………………………………….. 565
19.5. Nodemon: автоматическая перезагрузка веб-сервера ………………………………………………. 566
Глава 20. Работа JavaScript в веб-браузерах …………………………………………………. 568
20.1. Особенности работы JavaScript в веб-браузерах …………………………………………………….. 568
20.2. Первая JavaScript-программа ………………………………………………………………………………… 569
20.3. Тег <script> …………………………………………………………………………………………………………. 570
20.4. Расположение JavaScript-программы …………………………………………………………………….. 571
20.5. Расположение определений функций в HTML-коде ………………………………………………. 574
20.6. Консоль Mozilla Firefox ………………………………………………………………………………………… 575
20.7. Встроенные диалоговые окна ……………………………………………………………………………….. 576
20.7.1. Окно с сообщением и кнопкой OK …………………………………………………………….. 576
20.7.2. Окно с сообщением и кнопками OK и Отмена …………………………………………… 577
20.7.3. Окно с полем ввода и кнопками OK и Отмена …………………………………………… 577
20.8. Получение доступа к элементам веб-страницы ……………………………………………………… 578
20.9. Создание часов на веб-странице ……………………………………………………………………………. 579
20.10. Отладчик Mozilla Firefox …………………………………………………………………………………….. 580
20.11. JavaScript-библиотеки ………………………………………………………………………………………… 582
Глава 21. Объектная модель документа ……………………………………………………….. 584
21.1. Структура объектной модели документа ……………………………………………………………….. 584
21.2. Объект window …………………………………………………………………………………………………….. 585
21.3. Работа с фреймами ………………………………………………………………………………………………. 586
21.4. Объект navigator: получение сведений о веб-браузере …………………………………………… 586
12 Оглавление
21.5. Объект screen: получение сведений об экране клиентского компьютера…………………. 587
21.6. Объект location: доступ к интернет-адресу веб-страницы ………………………………………. 587
21.7. Объект history: история веб-браузера ……………………………………………………………………. 588
21.8. Объект document: работа с веб-страницей ……………………………………………………………… 588
21.9. Узлы DOM …………………………………………………………………………………………………………… 591
21.10. Общие свойства и методы элементов веб-страницы …………………………………………….. 595
21.11. Работа с таблицами стилей …………………………………………………………………………………. 596
21.12. Объект selection: работа с выделением ………………………………………………………………… 599
21.13. Объект Range: работа с фрагментами текста ……………………………………………………….. 601
21.14. Cookie: хранение данных на компьютере клиента ………………………………………………… 604
21.15. Хранилище ………………………………………………………………………………………………………… 607
21.15.1. Сессионное и локальное хранилища ………………………………………………………… 608
21.15.2. Работа с хранилищем ………………………………………………………………………………. 608
21.15.3. Использование локального хранилища для хранения данных ……………………. 609
21.16. Работа с графическими изображениями ………………………………………………………………. 610
21.17. Работа с мультимедиа…………………………………………………………………………………………. 611
21.18. Средства геолокации ………………………………………………………………………………………….. 613
21.18.1. Доступ к средствам геолокации ……………………………………………………………….. 613
21.18.2. Получение данных геолокации ………………………………………………………………… 613
21.18.3. Обработка нештатных ситуаций ………………………………………………………………. 614
21.18.4. Задание дополнительных параметров ………………………………………………………. 615
21.18.5. Отслеживание местоположения компьютера ……………………………………………. 616
Глава 22. События ………………………………………………………………………………………… 617
22.1. Назначение обработчиков событий ………………………………………………………………………. 617
22.2. Удаление обработчиков событий ………………………………………………………………………….. 619
22.3. Указатель this ………………………………………………………………………………………………………. 619
22.4. Объект event ………………………………………………………………………………………………………… 620
22.5. Действия по умолчанию и их отмена …………………………………………………………………….. 621
22.6. Всплывание событий ……………………………………………………………………………………………. 623
22.7. Фазы событий ……………………………………………………………………………………………………… 625
22.8. События веб-страницы …………………………………………………………………………………………. 626
22.9. События мыши …………………………………………………………………………………………………….. 627
22.10. События клавиатуры ………………………………………………………………………………………….. 630
22.11. События аудио- и видеопроигрывателей ……………………………………………………………… 631
Глава 23. Взаимодействие с элементами форм …………………………………………….. 633
23.1. Элементы формы …………………………………………………………………………………………………. 633
23.2. Коллекция forms. Доступ к элементу формы из скрипта ………………………………………… 634
23.3. Работа с формами ………………………………………………………………………………………………… 635
23.4. Работа с элементами формы …………………………………………………………………………………. 636
23.4.1. Текстовые поля, поля ввода пароля, подстроки поиска, адреса электронной
почты, интернет-адреса и телефона ………………………………………………………………………. 638
23.4.2. Поле ввода числа и регулятор ……………………………………………………………………. 640
23.4.3. Поля ввода даты и времени ……………………………………………………………………….. 641
23.4.4. Поле выбора цвета ……………………………………………………………………………………. 641
23.4.5. Поле выбора файла …………………………………………………………………………………… 641
23.4.6. Область редактирования ……………………………………………………………………………. 642
23.4.7. Флажок и переключатель ………………………………………………………………………….. 644
Оглавление 13
23.4.8. Список ……………………………………………………………………………………………………… 645
23.4.9. Кнопки ……………………………………………………………………………………………………… 649
23.5. Расширенная проверка значения, занесенного в поле ввода …………………………………… 651
Глава 24. Холст: программируемая графика ……………………………………………….. 653
24.1. Тег <canvas> ……………………………………………………………………………………………………….. 653
24.2. Создание контекста рисования ……………………………………………………………………………… 653
24.3. Заливка ………………………………………………………………………………………………………………… 654
24.4. Контур …………………………………………………………………………………………………………………. 654
24.5. Рисование прямоугольников …………………………………………………………………………………. 656
24.6. Очистка области холста ……………………………………………………………………………………….. 656
24.7. Вывод текста ……………………………………………………………………………………………………….. 657
24.8. Вывод графических изображений …………………………………………………………………………. 658
24.9. Рисование сложных фигур ……………………………………………………………………………………. 659
24.10. Определение вхождения точки в состав контура ………………………………………………….. 662
24.11. Задание сложных цветов …………………………………………………………………………………….. 662
24.11.1. Линейный градиент …………………………………………………………………………………. 662
24.11.2. Радиальный градиент ………………………………………………………………………………. 663
24.11.3. Заливка текстурой …………………………………………………………………………………… 664
24.12. Сохранение и восстановление состояния …………………………………………………………….. 664
24.13. Преобразования …………………………………………………………………………………………………. 665
24.14. Управление наложением графики ……………………………………………………………………….. 665
24.15. Задание уровня прозрачности ……………………………………………………………………………… 666
24.16. Создание тени ……………………………………………………………………………………………………. 667
24.17. Работа с отдельными пикселами …………………………………………………………………………. 667
24.17.1. Получение массива пикселов …………………………………………………………………… 667
24.17.2. Создание пустого массива пикселов…………………………………………………………. 668
24.17.3. Манипуляция пикселами …………………………………………………………………………. 668
24.17.4. Вывод массива пикселов …………………………………………………………………………. 669
Глава 25. AJAX: обмен данными без перезагрузки веб-страницы ……………….. 671
25.1. Основы технологии AJAX ……………………………………………………………………………………. 671
25.1.1. Обмен данными с помощью тега <iframe> ………………………………………………… 671
25.1.2. Объект XMLHttpRequest …………………………………………………………………………….. 675
25.1.3. Получение данных в текстовом формате ……………………………………………………. 680
25.1.4. Получение данных в формате XML……………………………………………………………. 685
25.1.5. Получение данных в формате JSON …………………………………………………………… 692
25.2. Fetch API ……………………………………………………………………………………………………………… 698
25.2.1. Функция fetch() …………………………………………………………………………………………. 698
25.2.2. Классы URL и URLSearchParams……………………………………………………………….. 701
25.2.3. Объект запроса Request ……………………………………………………………………………… 707
25.2.4. Отправка данных при выгрузке веб-страницы ……………………………………………. 711
25.2.5. Прерывание запроса ………………………………………………………………………………….. 712
25.2.6. Класс FormData ………………………………………………………………………………………… 712
25.2.7. Отправка файлов ………………………………………………………………………………………. 715
25.2.8. Объект ответа Response …………………………………………………………………………….. 718
25.2.9. Класс Headers …………………………………………………………………………………………… 721
25.2.10. Кросс-доменные запросы ………………………………………………………………………… 724
14 Оглавление
Глава 26. Сборка веб-сайтов …………………………………………………………………………. 730
26.1. Файл .browserslistrc ……………………………………………………………………………………………… 730
26.2. Сборка CSS- и SCSS-файлов…………………………………………………………………………………. 731
26.2.1. Добавление вендорных префиксов …………………………………………………………….. 731
26.2.2. Сжатие CSS-файлов ………………………………………………………………………………….. 732
26.2.3. SCSS-транслятор node-sass ………………………………………………………………………… 733
26.3. Пакет npm-run-all: запуск нескольких скриптов …………………………………………………….. 736
26.4. Сборщик проектов Webpack …………………………………………………………………………………. 737
26.4.1. Создание файла конфигурации ………………………………………………………………….. 737
26.4.2. Сборка JavaScript-файлов ………………………………………………………………………….. 738
26.4.3. Несколько точек входа ………………………………………………………………………………. 739
26.4.4. Очистка содержимого каталога …………………………………………………………………. 741
26.4.5. Подключение файлов в формате JSON ………………………………………………………. 742
26.4.6. Подключение библиотек из каталога node_modules ……………………………………. 742
26.4.7. Пакет babel-loader ……………………………………………………………………………………… 743
26.4.8. Сборка SCSS-файлов ………………………………………………………………………………… 744
26.4.9. Подключение изображений ……………………………………………………………………….. 746
26.4.10. Копирование файлов ……………………………………………………………………………….. 747
Заключение ……………………………………………………………………………………………………. 749
Приложение. Описание электронного архива ………………………………………………. 750
Предметный указатель …………………………………………………………………………………. 751 |
---|
Отзывы
Отзывов пока нет.