Способы подключения скрипта. Структура кода. Режим "use strict". Константы, переменные и литералы. Ключевые слова let, const, var. Типы данных: число, строка, логический тип, значения "null" и "undefined", объекты и символы. Оператор typeof. Преобразования типов.
Операторы и операнды. Унарный и бинарный операторы. Приоритет операторов. Присваивание. Инкремент/декремент. Операторы сравнения.
Методы взаимодействия: alert, prompt, confirm, document.write. Условный оператор if и тернарный оператор '?'. Логические операторы. Конструкция "switch".
Циклы for, while, do…while.
Редактор кода Visual Studio Code. Настройки редактора. Рабочая область редактора. Разделение экрана. Работа с проектами. Режим просмотра. Работа с терминалом. Базовые операции командной строки. Установка и настройка плагинов. Плагин быстрого набора кода Emmet.
Консоль разработчика и отладка кода в браузере Chrome.
Объявление функции: Function Declaration и Function Expression. Области видимости переменных: глобальные и локальные переменные. Параметры функции. Возврат значения. Рекурсия. Замыкания. Выбор названия функции. Принцип: одна функция – одно действие. Функции высшего порядка и callback-функции. Конструктор функций.
Объявление массива. Внутреннее устройство и эффективность массива. Перебор элементов с помощью for, for…of и forEach. Свойство length. Отрицательные индексы. Многомерные массивы. Метод toString.
Методы начала массива: shift, unshift. Методы конца массива: pop, push. Добавление, удаление и замена элементов массива – метод splice. Копирование элементов массива – методы slice, concat. Поиск в массиве – методы indexOf/lastIndexOf, includes, find и findIndex, filter.
Преобразования и упорядочения массива – методы map, sort, reverse, split и join, reduce/reduceRight и др.
Объекты JavaScript, объекты браузера и пользователя. Создание объектов. Свойства и методы объектов. Ключевое слово this. Операции с объектами. Доступ к свойству через точку, квадратные скобки, переменную. Вычисляемые свойства. Методы call, apply, bind.
Объекты как ассоциативные массивы. Объявление объекта со свойствами: пары ключ-значение. Проверка существования свойства. Перебор и подсчет свойств: цикл for…in. Передача изменений по ссылке. Клонирование объектов. Метод delete. Сериализация объектов – методы JSON.stringify и JSON.parse.
Объекты Number, String, Boolean и др. Методы объекта Math. Методы объекта Date.
Модули в JavaScript. Директивы export и import.
Классы. Функциональный и прототипный стили. Конструктор объектов. Внутренний (приватный) и внешний (публичный) интерфейсы. Наследование.
Программный интерфейс DOM. Методы поиска элементов HTML: по идентификатору – getElementById, по имени тега – getElementsByTagName, по имени класса – getElementsByClassName, по CSS селекторам – querySelectorAll, getComputedStyle и др.
Методы изменения элементов HTML и CSS: внутреннего содержимого – innerHTML, значения атрибута – setAttribute, стиля элемента – style, cssText, classList и др. Принцип именования свойств CSS в JavaScript.
Методы добавления и удаления элементов HTML: создание – createElement, удаление – removeChild, добавление – appendChild, замена – replaceChild и др.
Навигация по узлам. Работа с узлами. Наборы элементов. Списки узлов.
События и реагирования на события (обработчики событий). События объектов браузера. События мыши. Клавиатурные события и др. Атрибуты событий. События выбранного элемента. Метод addEventListener.
Анимация в JavaScript: методы setInterval, setTimeout, clearInterval, clearTimeout.
Свойства/методы объектов window, document, screen, location, history, navigator, event.
Выбор элементов по коллекции document: images, links, forms.
Хранение пользовательской информации в веб-страницах – cookies.
Комбинирование и группирование селекторов, переменные в CSS.
Наследование и каскадирование селекторов.
Использование CSS-медиазапросов для адаптивного дизайна.
Анимация и трансформация в CSS. Градиенты, рамки, тени, переходы, фильтры.
Использование препроцессоров и постпроцессоров - вендорных префиксов. CSS-фреймворки.
Семантические элементы HTML5.
Блочные элементы <div>. Строчные элементы <span>.
Блочная модель: контейнеры и обертки. Свойства width, height, margin, border, padding. Тип контейнера элемента – свойство display. Область блочного элемента – свойство box-sizing. Позиционирование элементов - свойство position. Переполнение блочного элемента - свойство overflow. Наложение элементов - свойство z-index. Плавающие блоки - свойство float и clear. CSS-спрайты - свойство background-position.
Компоновка элементов с помощью модели CSS Flexbox.
Компоновка элементов с помощью модели CSS Grid.
Быстрое получение и изменение атрибутов и содержимого элементов DOM.
Добавление и удаление элементов.
Управление событиями.
Создание анимационных эффектов.
Выполнение AJAX-запросов.
Использование плагинов.
Понятие API. API браузера. Сторонние API.
API форм (Form API). Интерфейс HTMLFormElement. Свойства элемента form - name, action, method, enctype. Методы form – submit, reset. Выбор формы по коллекции forms и по значению атрибута name. Выбор элементов по коллекции elements. Элементы <input> с полем ввода текста. Проверка формы с помощью метода setCustomValidity(). Псевдоклассы :focus, :invalid, :valid, :required, :optional. Элементы <input> с выбором значения. Валидация радиокнопок и чекбоксов. Другие элементы формы. События focus/blur.
API перетаскивания (Drug&Drop API). События источника - dragstart, drag, dragend. События целевого элемента - dragenter, dragover, drop, dragleave. Примеры перетаскивания одного элемента в другой; полного перетаскивания; выбора источника для перетаскивания; выбора позиции относительно указателя мыши; перетаскивание файлов из внешних источников.
API геолокации (Geolocation API). Определение и слежение за местоположением. Методы getCurrentPosition, watchPosition, clearWatch. Подключение Гугл-карт и Яндекс-карт.
API Видео и аудио (Video and audio APIs). Свойства, методы и события для программирования интерактивного плейера.
API web-хранилища (Web Storage API) - развитие технологии cookies.
API холст (Canvas API). Создания графики с помощью JavaScript: цветной прямоугольник, линии и пути, квадратичная и кубическая кривые Безье, линейный и радиальный градиенты, работа с текстом, создание тени, вставка изображений (обычных, с измененными размерами, кадрированных, шаблоны изображений), трансформация элементов, сохранение и восстановление состояния настроек, наложения элементов. Обработка видео. Библиотеки для работы с графикой - Paper.JS, Fabric.JS, Kinetic.JS и др.
Установка фреймворка.
Создание модуля.
Создание компонента.
Директивы в Angular 2.
Привязка данных.
Особенности языка TypeScript.
Работа с формами.
Установка и подключение Material Design.
Создание панелей (toolbar).
Создание спиннера.
Создание кнопок и иконок.
Создание меню.
Создание карточки.
Создание кнопки-переключателя c фильтрацией и др.
Создание web-приложения в Angular 2: создание компонент, добавление интерактивных элементов, программирование взаимодействия.