Программа
  • 1. Язык JavaScript:

    • Версии и реализации JavaScript;

    • Области применения JavaScript (браузер, сервер, мобильная разработка);

    • Типы данных: String, Number, Boolean (понятие truthy и falsy);

    • Операторы, приоритет операторов;

    • Объявление переменных: var, const, let;

    • Циклы: while, for, for … in, for …of;

    • Работа с числами и строками;

    • Значения null и undefined: отличия и цели применения;

    • Работа с консолью;

    • Исключения в JavaScript.

  • 2. JSON, объекты и массивы:

    • Формат JSON, примеры;

    • JSON.parse и stringify;

    • Объекты, работа с классом Object;

    • Создание объектов (с помощью литерала {}, оператор new, метод create);

    • Прототипическое наследование, ссылка __proto__;

    • Геттеры и сеттеры;

    • Оператор in и hasOwnProperty, понятие перечислимых свойств;

    • Метод toString(), вызов и переопределение метода;

    • Метод valueOf(), вызов и переопределение метода;

    • Создание массивов: литералы и new Array();

    • Автоматическое изменение длины массива;

    • Получение и установка длины массива length, усечение массива;

    • Применение методов join() и concat();

    • Использование метода sort, задание порядка сортировки массива;

    • Использование методов slice и splice;

    • Использование методов push, pop, shift, unshift: создание стека или очереди.

  • 3. Работа с датами и строками:

    • Применение конструктора new Date();

    • Понятие компьютерного представления даты как времени с Epoch;

    • Использование getTime() и setTime();

    • Парсинг строкового представления дат;

    • Варианты создания строк в JS: использование одинарных и двойных кавчек;

    • Интерполяция строк (строка в апострофах);

    • Экранирование специальных символов в строке;

    • Конкатенация строк, перевод в верхний и нижний регистр;

    • Поиск подстроки с помощью indexOf() и lastIndexOf();

    • Выделение подстроки с помощью substring() и substr()

    • Применение методов includes, endsWith, startsWith.

  • 4. Применение JavaScript в браузере: модель DOM:

    • Управление окном браузера, документом, событиями и оформлением (CSS-

    • стилями);

    • Объект window и его применение;

    • Подключение кода JavaScript к HTML-странице;

    • Порядок выполнения скриптов на странице;

    • Кэширование скриптов, CDN-серверы, принудительная перезагрузка JavaScript;

    • Работа с ссылками, подключение JavaScript к ссылкам;

    • Событие onload и его использование;

    • XSS-атаки на сайт;

    • Работа с DOM: использование window, document, childNodes;

    • Манипуляции документом с помощью DOM: создание, удаление, перемещение

    • элементов;

    • Использование getElementById(), getElementsByTagName(),

    • getElementsByClassName() для поиска элементов на странице;

    • Работа с методами и свойствами HTMLDocument и HTMLElement.

  • 5. Работа с событиями в браузере:

    • Понятие событийного программирования;

    • Обработчики и слушатели событий;

    • Подключение обработчиков c помощью addEventListener();

    • Свойства и методы класса Event;

    • Распространение событий вверх (bubbling) и вниз (capturing);

    • Остановка распространения;

    • События окна;

    • События мыши и клавиатуры, специальные свойства событий;

    • События формы;

  • 6. Работа с CSS и управление стилями:

    • Стандарт CSS, основные свойства CSS;

    • Общие стили и стили отдельных элементов;

    • Каскадирование стилей;

    • CSS-селекторы;

    • Изменение CSS с помощью JavaScript;

    • Отступы: margin, padding, border;

    • Управление видимостью элементов: visibility и display;

    • Позиционирование элементов: absolute, fixed, relative, установка top и left;

    • Единицы измерения px, pt и другие;

    • Переполнение элемента и управление через свойство overflow;

    • Управление слоями документа: свойство zIndex;

    • Анимация, перемещение элементов;

    • Работа с классами, установка className;

    • Работа с прозрачностью и переходами (transition);

    • Метод querySelectorAll().

  • 7. Работа с модулями в JavaScript, менеджер пакетов NPM, сборщик Webpack:

    • Причины использования модулей;

    • Экспорт из модуля;

    • Импорт из модуля;

    • Реэкспорт;

    • Работа с NPM, файл package.json;

    • Папка node_modules, загрузка пакетов с помощью NPM;

    • Глобальная и локальная установка пакетов;

    • Применение webpack для сборки проекта;

    • Загрузчики CSS и TypeScript;

    • Конфигурация webpack.config.js;

    • Создание бандла, сжатие;

    • Плагины webpack;

    • Применение старых систем модульности – CommonJS и AMD;

    • Использование CommonsChunkPlugin, несколько точек входа;

    • Горячая замена модулей HMR.

  • 8. Классы и наследование в JavaScript:

    • Прототипное наследование, ссылка __proto__;

    • Прототип объекта;

    • Использование instanceof;

    • Ключевое слово class, создание классов;

    • Ключевое слово super;

    • Применение метода Object.assign();

    • Применение метода Object.defineProperty();

    • Геттеры и сеттеры;

    • Spread-оператор для работы с объектами и массивами;

    • Деструктурирование массива и объекта.

  • 9. Функциональное программирование в JavaScript:

    • Функции как переменные;

    • Массив arguments;

    • Класс Function, методы call() и apply();

    • Метод bind(), установка this и части параметров с помощью bind;

    • Замыкания в JavaScript;

    • Инкапсуляция значений с помощью замыканий;

    • Создание функции через конструктор Function: конструирование строки;

    • Стрелочные функции, примеры их применения;

    • Функциональная манипуляция массивом: find, findIndex, filter;

    • Примеры использования map/filter/reduce для обработки данных в массиве.

  • 10. Иммутабельность, тестирование, паттерн MVC:

    • Понятие иммутабельности, ее преимущества;

    • Мутабельные и иммутабельные методы изменения объектов и массивов;

    • Понятие и преимущества Virtual DOM;

    • Тестирование иммутабельных функций, применение Jest;

    • Мемоизация, ее преимущества;

    • Основные ошибки и рекомендации при использовании функционального программирования;

    • Паттерн MVC, создание пользовательского интерфейса;

    • Обзор основных библиотек для разработки интерфейса: Angular, React, Vue.

  • 11. Асинхронность в JavaScript. Промисы.:

    • Понятие и необходимость асинхронности;

    • Работа с setTimeout, setInterval, clearTimeout;

    • Функции обратного вызова (коллбэки);

    • Потеря this при работе с функцией обратного вызова. Варианты решения

    • (использование bind, стрелочных функций и др.);

    • Понятие промисов, возвращение Promise из асинхронной функции;

    • Метод Promise.all(), его применение;

    • Синтаксис async/await, варианты применения, ограничения;

    • Обработка внештатных ситуаций: Promise reject, обработка исключений при асинхронных вызовах.

  • 12. Работа с сервером. Протокол HTTP. REST-сервисы:

    • Протокол HTTP;

    • Заголовки и методы HTTP (GET, POST, PUT, DELETE, другие), передача данных;

    • HTTP-серверы (обзор);

    • Коды ответа HTTP-сервера;

    • Использование форм для отправки данных;

    • Передача данных на сервер с помощью AJAX;

    • Архитектура REST: преимущества и особенности;

    • Реализация CRUD (операций Create/Read/Update/Delete) при работе с REST;

    • Применение фунции fetch() для получения и отправки данных;

    • Документирование REST-сервисов с помощью Swagger;

    • Понятие HATEOAS, применение;

  • 13. Библиотека AXIOS. Протокол WebSocket:

    • Сравнение высокоуровневой библитеки Axios и применения низкоуровневого fetch();

    • GET- и POST- запросы в Axios;

    • Применение async/await c Axios;

    • Обработка ошибок при использовании Axios;

    • Отмена запроса с помощью Axios;

    • Протокол WebSocket;

    • Примеры использования WebSocket, сравнение с HTTP;

    • HTML-анимация;