О чём курс
В ходе этого тренинга слушатели смогут лучше понять сложные функции, синтаксические конструкции и внутренние механизмы языка JavaScript. Этот курс будет полезен разработчикам, которые уже имеют опыт использования JavaScript, но хотят полностью реализовать потенциал этого языка и начать использовать менее известные, но его очень интересные и полезные возможности.
Цели
В ходе тренинга слушатели:
- научатся лучше понимать язык JavaScript;
- подробно изучат типы JavaScript и их конвертацию;
- узнают об асинхронном программировании;
- научатся использовать REST сервисы и вебсокеты для взаимодействия с сервером;
- научатся использовать workers и параллельное программирование;
- смогут использовать workers для кэширования;
- научатся использовать функциональное и реактивное программирование.
Целевая аудитория
Разработчики JavaScript, разработчики TypeScript, веб-разработчики, разработчики NodeJS developers.
Для кого
Разработчик
Улучшаемые навыки
Асинхронное программирование
Продвинутые концепции OOP
Работа с функциональным программированием
Оптимизация производительности
Инструменты и экосистема JavaScript
Темы курса
01
Подробно об основах JavaScript (6 ч. - теория, 2 ч. - практика)
- Объект классов
-
Дескрипторы объекта
-
Методы объекта
-
Наследование прототипа
-
Символы
-
Итераторы
-
Генераторы
-
Создание итерируемых объектов
-
Асинхронные генераторы
02
Подробно о типах в JavaScript (6 ч. - теория, 2 ч. - практика)
- Обзор типов;
- Номер типа;
- Проблемы плавающей точки и округления;
- Тип «Строка»;
- Тип Boolean;
- Конвертация типов;
- Map, Set, WeakMap, WeakSet;
- BigInt;
- ArrayBuffer;
- Типизированные массивы;
- DataViews;
- Blobs;
- FileReader;
- Обработка загруженных файлов.
03
Асинхронное программирование (7 ч. - теория, 2 ч. - практика)
- Асинхронные вызовы;
- Использование в обратных вызовах;
- Класс «Промис»;
- Обработка исключений Promise;
- Методы all(), any(), race(), allSettled();
- Отмена промиса с помощью Promise.race();
- Отмена промиса с помощью AbortController;
- Синтаксис async/await;
- Синтаксис async/await: Обработка исключений;
- Синтаксис async/await: await высокого уровня;
- Синтаксис async/await: Ограничения;
- Архитектура REST;
- Коды состояния HTTP;
- Методы HTTP;
- Отсутствие сохранения состояния и масштабируемость;
- Операции CRUD и сервисы Rest;
- Формат возвращаемых данных: XML, JSON, XHTML;
- Функция Fetch;
- Fetch с возможностью отменить запрос;
- Библиотека Axios для вызовов REST;
- Обработка ошибок в Axios;
- Отмена запросов в Axios;
- Перехватчики в Axios;
- Протокол WebSocket;
- WebSocket в браузере;
- WebSocket на сервере (Node.js);
- Когда использовать WebSocket?
04
Workers и параллельное программирование (4 ч. - теория, 2 ч. - практика)
- Workers;
- Типы worker;
- Worker APIs;
- Регистрирующий worker;
- Примеры использования Worker;
- Сервисные workers;
- Кэш API;
- Регистрирующий Service worker;
- Жизненный цикл Service worker;
- Service worker как прокси сервера;
- Стратегия Cache First (Cache Falling Back to Network);
- Стратегия Network First (Network Falling Back to Cache);
- Стратегия Stale-While-Revalidate;
- Какую стратегию использовать;
- Обновление кэша в стратегии пуш-сообщений;
- Обновление кэша в стратегии фоновой синхронизации.
05
Функциональные программирование (9 ч. - теория)
- Функции как данные;
- Аргументы функции и массив аргументов;
- Функции как методы;
- Вызов и применение методов;
- Привязка функции к объекту;
- Замыкания;
- Создание инкапсулированного значение через замыкание;
- Функция «Конструктор»;
- Функции массивов: map/filter/reduce;
- Парадигмы программирования;
- Декларативное и императивное программирование;
- Функциональное программирование;
- Высокоупорядоченные функции;
- Чистые функции;
- Преимущества чистых функций;
- Неизменяемость;
- Неизменяемость объектов: Оператор Spread;
- Преимущества неизменяемости;
- Immutable.js;
- Встроенные структуры данных в Immutable.js;
- Монады и функциональная композиция;
- Function pipe();
- Декомпозиция функций;
- Монады для операций SIMD;
- Частичное применение функции;
- Карринг;
- Нулевая безопасность;
- Шаблон проектирования Null Object;
- Монада Maybe;
- Частично определенная функция;
- Правила хорошего кода для написания функций;
- Функциональные шаблоны проектирования;
- Шаблон проектирования MVC с чистыми функциями;
- Шаблон проектирования «наблюдатель» (observer);
- Шаблон проектирования «порождение событий» (event sourcing);
- Шаблон проектирования REDUX;
- REDUX DevTools;
- Преимущества REDUX;
- Шаблоны проектирования в реактивном программировании (RxJS);
- Операторы filter/map/take;
- Операторы MergeMap/ConcatMap/SwitchMap;
- Операторы Window/Buffer;
- Операторы Sample/Throttle/Debounce;
- Преимущества и примеры использования реактивного программирования.
Чему вы научитесь
01
Научитесь использовать асинхронные функции, промисы и async/await для работы с асинхронными операциями
02
Освоите продвинутые концепции объектно-ориентированного программирования в JavaScript, включая прототипное наследование, классы и модульность
03
Научитесь применять принципы функционального программирования, включая чистые функции, высшие функции и композицию функций
04
Освоите методы оптимизации производительности JavaScript-приложений, включая техники минимизации, отложенной загрузки и кэширования
05
Научитесь использовать современные инструменты и библиотеки, такие как Webpack, Babel и ESLint, для настройки окружения разработки и улучшения качества кода