Зачем изобретать велосипед, сталкиваясь с очередной проблемой в JavaScript? Здесь вы найдете множество рецептов кода для типовых задач программирования, а также познакомитесь c методами создания приложений, работающих в любом браузере. Адаптируемые примеры кода можно вставить практически в любой проект, а заодно поглубже изучить JS.
С помощью этой книги вы научитесь настраивать эффективную среду разработки с редактором кода, статическим анализатором и тестовым сервером; станете лучше понимать функции JS, включая замыкания и генераторы; узнаете, как использовать классы и наследование — основные концепции ООП; освоите работу с мультимедиа, включая аудио, видео и SVG; научитесь управлять HTML и CSS; благодаря Node.js сможете использовать JavaScript где угодно; узнаете, как получать доступ к удаленным данным и управлять ими с помощью технологий REST, GraphQL и Fetch; освоите популярную среду разработки приложений Express; научитесь выполнять асинхронные операции с промисами, async/await и веб-процессами.
Author(s): Адам Д. Скотт, Мэтью Макдоналд, Шелли Пауэрс
Series: Бестселлеры O’Reilly
Edition: 3
Publisher: Питер
Year: 2023
Language: Russian
Commentary: Publisher's PDF
Pages: 528
City: СПб.
Tags: Programming; JavaScript; Web Applications; Asynchronous Programming; Cookbook; GraphQL; Best Practices; Node.js; Object-Oriented Programming; Error Handling; Testing; Regular Expressions; ECMAScript; RESTful API; Express.js; HTML; Linting
Предисловие
Аудитория этой книги
Структура издания
Соглашения, использованные в этой книге
Примеры кода
Благодарности
От издательства
Часть I. Язык JavaScript
Глава 1. Настройка среды разработки
1.1. Выбираем редактор кода
1.2. Использование консоли разработки в браузере
1.3. Выполнение фрагментов кода в консоли разработчика
1.4. Использование строгого режима для выявления типичных ошибок
1.5. Вставка блоков HTML с помощью сокращенных команд Emmet
1.6. Установка менеджера пакетов npm (с Node.js)
1.7. Загрузка пакета с помощью npm
1.8. Обновление пакета с помощью npm
1.9. Настройка локального тестового сервера
1.10. Соблюдение стандартов кодирования с помощью статического анализатора
1.11. Согласованное оформление кода с помощью форматировщика
1.12. Эксперименты в интерактивной среде JavaScript
Глава 2. Строки и регулярные выражения
2.1. Проверка того, что строка существует и она не пустая
2.2. Преобразование числового значения в форматированную строку
2.3. Вставка специальных символов
2.4. Использование эмодзи
2.5. Использование шаблонных литералов для более наглядной конкатенации строк
2.6. Сравнение строк без учета регистра
2.7. Проверка того, содержит ли строка заданную подстроку
2.8. Замена всех вхождений строки
2.9. Замена тегов HTML на именованные сущности
2.10. Использование регулярных выражений для создания шаблонов при замене строк
2.11. Извлечение списка из строки
2.12. Поиск по шаблону
2.13. Удаление пробелов в начале и конце строки
2.14. Замена первой буквы строки на прописную
2.15. Валидация адреса электронной почты
Глава 3. Числа
3.1. Генерирование случайных чисел
3.2. Генерирование криптографически надежных случайных чисел
3.3. Округление до заданного десятичного разряда
3.4. Сохранение точности в дробных числах
3.5. Преобразование строки в число
3.6. Преобразование десятичных значений в шестнадцатеричные
3.7. Преобразование градусов в радианы
3.8. Вычисление длины дуги окружности
3.9. Манипуляции с очень большими целыми числами в формате BigInt
Глава 4. Даты
4.1. Получение текущих даты и времени
4.2. Преобразование строки в дату
4.3. Добавляем дни к дате
4.4. Сравнение дат и проверка двух дат на равенство
4.5. Вычисление времени, прошедшего между двумя датами
4.6. Представление даты в виде форматированной строки
Глава 5. Массивы
5.1. Проверка того, является ли объект массивом
5.2. Перебор всех элементов массива
5.3. Проверка равенства двух массивов
5.4. Разбиение массива на отдельные переменные
5.5. Передача массива в функцию, которая принимает список значений
5.6. Клонирование массива
5.7. Слияние двух массивов
5.8. Копирование части массива, выбранной по положению элемента
5.9. Извлечение из массива элементов, удовлетворяющих заданному условию
5.10. Очистка массива
5.11. Удаление дубликатов
5.12. Сведение двумерного массива
5.13. Точный поиск элементов массива
5.14. Поиск элементов массива, удовлетворяющих заданному критерию
5.15. Удаление и замена элементов массива
5.16. Сортировка массива объектов по заданному свойству
5.17. Преобразование элементов массива
5.18. Использование всех элементов массива в одном вычислении
5.19. Проверка содержимого массива
5.20. Построение коллекции недублирующихся значений
5.21. Создание коллекции элементов, индексированной по ключу
Глава 6. Функции
6.1. Передача одной функции в другую в качестве аргумента
6.2. Использование стрелочных функций
6.3. Предоставление значения параметра по умолчанию
6.4. Создание функции, принимающей неограниченное число аргументов
6.5. Использование именованных параметров функции
6.6. Создание функции с сохранением состояния посредством замыкания
6.7. Создание функции-генератора, которая возвращает несколько значений
6.8. Уменьшение избыточности за счет частичного применения
6.9. Фиксация this посредством привязки функций
6.10. Реализация рекурсивного алгоритма
Глава 7. Объекты
7.1. Проверка того, относится ли объект к заданному типу
7.2. Объединение данных с помощью объектных литералов
7.3. Проверка существования свойства у объекта
7.4. Перебор всех свойств объекта
7.5. Проверка того, является ли объект пустым
7.6. Объединение свойств двух объектов
7.7. Выбор способа определения свойств
7.8. Запрет любых изменений объекта
7.9. Перехват и изменение объектов с помощью прокси-объектов
7.10. Клонирование объектов
7.11. Создание глубокой копии объекта
7.12. Создание абсолютно уникальных ключей для свойств объекта
7.13. Создание перечислений с помощью Symbol
Глава 8. Классы
8.1. Создание класса для многократного использования
8.2. Добавление в класс новых свойств
8.3. Улучшенное строковое представление класса
8.4. Создание произвольного класса посредством шаблона «Конструктор»
8.5. Создание возможности для объединения методов класса в цепочку
8.6. Создание статических методов класса
8.7. Создание объектов посредством статических методов
8.8. Наследование функционала другого класса
8.9. Объединение классов JavaScript в модули
Глава 9. Асинхронное программирование
9.1. Обновление страницы в цикле
9.2. Использование функции, которая возвращает промис
9.3. Замена асинхронной функции с обратным вызовом на промис
9.4. Конкурентное выполнение нескольких промисов
9.5. Ожидание выполнения промиса с помощью await и async
9.6. Создание асинхронной функции-генератора
9.7. Выполнение фоновых задач с помощью Web Worker
9.8. Поддержка сообщений о ходе выполнения задач в Web Worker
Глава 10. Ошибки и тестирование
10.1. Обнаружение и обезвреживание ошибок
10.2. Перехват различных типов ошибок
10.3. Перехват асинхронных ошибок
10.4. Обнаружение необработанных ошибок
10.5. Выдача обычной ошибки
10.6. Выдача нестандартных ошибок
10.7. Написание модульных тестов для кода
10.8. Отслеживание покрытия кода тестами
Часть II. JavaScript в браузере
Глава 11. Инструментарий браузера
11.1. Отладка кода JavaScript
11.2. Анализ производительности во время выполнения кода
11.3. Обнаружение неиспользуемого кода JavaScript
11.4. Выдача наилучших рекомендаций посредством Lighthouse
Глава 12. Работа с HTML
12.1. Доступ к определенному элементу, поиск его родительского и дочерних элементов
12.2. Перебор результатов, полученных от querySelectorAll(), с помощью forEach()
12.3. Привязка к элементу действия в ответ на щелчок
12.4. Поиск всех элементов с данным атрибутом
12.5. Выбор всех элементов определенного типа
12.6. Исследование дочерних элементов с помощью Selectors API
12.7. Изменение класса элемента
12.8. Присвоение элементу атрибута style
12.9. Создание абзаца и вставка в него текста
12.10. Вставка нового элемента в определенной точке DOM
12.11. Проверка того, установлен ли флажок
12.12. Вставка значений в таблицу HTML
12.13. Удаление строк из таблицы HTML
12.14. Скрытие частей страницы
12.15. Создание окон, всплывающих по наведению указателя мыши
12.16. Валидация данных формы
12.17. Выделение ошибочно заполненных полей форм и реализация специальных возможностей
12.18. Создание автоматически обновляемой области, доступной на специализированных устройствах
Глава 13. Получение удаленных данных
13.1. Запрос удаленных данных с помощью Fetch API
13.2. Использование метода XMLHttpRequest
13.3. Отправка данных формы
13.4. Заполнение списка выбора данными, полученными с сервера
13.5. Синтаксический анализ данных, полученных в формате JSON
13.6. Получение и синтаксический анализ данных в формате XML
13.7. Передача двоичных данных и загрузка изображения
13.8. Обмен HTTP cookies между несколькими доменами
13.9. Двунаправленный обмен данными между клиентом и сервером посредством WebSockets
13.10. Длинный опрос удаленного источника данных
Глава 14. Сохранение данных
14.1. Сохранение информации в cookies
14.2. Хранение данных на стороне клиента с помощью sessionStorage
14.3. Создание хранилища данных на стороне клиента на основе localStorage
14.4. Сохранение больших объемов данных на стороне клиента с помощью IndexedDB
14.5. Упрощение IndexedDB с помощью библиотеки
Глава 15. Работа с мультимедиа
15.1. JavaScript для SVG
15.2. Доступ к SVG из скрипта веб-страницы
15.3. Построение столбчатой диаграммы в формате SVG с помощью библиотеки D3
15.4. Интеграция элементов SVG и Canvas в HTML
15.5. Выполнение процедуры в начале воспроизведения аудиофайла
15.6. Управление отображением видео с помощью элемента video и JavaScript
Глава 16. Создание веб-приложений
16.1. Создание пакетов JavaScript
16.2. JavaScript для мобильного интернета
16.3. Создание прогрессивного веб-приложения
16.4. Тестирование и профилирование прогрессивных веб-приложений
16.5. Получение текущего URL
16.6. Перенаправление на другой URL
16.7. Копирование текста в буфер обмена
16.8. Вывод на стационарном компьютере таких же уведомлений, как на мобильном устройстве
16.9. Открытие в браузере файла с локального устройства
16.10. Расширение возможностей с помощью Web Components
16.11. Выбор фреймворка для разработки на стороне клиента
Часть III. Node.js
Глава 17. Основы Node
17.1. Управление версиями Node с помощью Node Version Manager
17.2. Ответ на простой запрос браузера
17.3. Интерактивная проверка кода Node с помощью REPL
17.4. Чтение данных из файла и запись данных в файл
17.5. Получение данных из терминала
17.6. Получение пути к выполняемому скрипту
17.7. Работа с таймерами и циклом событий Node
Глава 18. Модули Node
18.1. Поиск нужного модуля Node через npm
18.2. Преобразование библиотеки в модуль Node
18.3. Перенос кода в модульную среду
18.4. Создание устанавливаемого модуля Node
18.5. Создание мультиплатформенных библиотек
18.6. Тестирование модулей
Глава 19. Управление экосистемой Node
19.1. Использование переменных среды
19.2. Что делать с адом обратных вызовов
19.3. Доступ к функциям командной строки из приложений Node
19.4. Передача аргументов в командную строку
19.5. Создание утилиты командной строки с подсказкой с помощью Commander
19.6. Обеспечение работоспособности экземпляра Node
19.7. Отслеживание изменений и перезапуск приложения в процессе разработки на локальном компьютере
19.8. Многократное выполнение задач по расписанию
19.9. Тестирование производительности и возможностей приложения WebSockets
Глава 20. Удаленные данные
20.1. Получение удаленных данных
20.2. Анализ экранных данных
20.3. Доступ к данным в формате JSON посредством RESTful API
Глава 21. Построение веб-приложений с помощью Express
21.1. Использование Express для ответов на запросы
21.2. Использование Express-Generator
21.3. Задача маршрутизации
21.4. Работа с OAuth
21.5. Аутентификация пользователей в OAuth 2 с помощью Passport.js
21.6. Обработка форматированных данных
21.7. Построение RESTful API
21.8. Построение API GraphQL
Об авторах
Иллюстрация на обложке