Программирование
javascript
ЧАСТЬ 1
Язык программирования JavaScript
Здесь вы можете изучить JavaScript, начиная с нуля и заканчивая продвинутыми концепциями вроде ООП.
Мы будем использовать браузер в качестве окружения, но основное внимание будет уделяться именно самому языку JavaScript.
Введение
Введение в JavaScript
Справочники и спецификации
Редакторы кода
Консоль разработчика
Основы JavaScript
Привет, мир!
Структура кода
Строгий режим — "use strict"
Переменные
Типы данных
Преобразование типов
Операторы
Операторы сравнения
Взаимодействие: alert, prompt, confirm
Условные операторы: if, '?'
Логические операторы
Циклы while и for
Конструкция "switch"
Функции
Function Expression
Функции-стрелки, основы
Особенности JavaScript
Качество кода
Отладка в браузере Chrome
Советы по стилю кода
Комментарии
Ниндзя-код
Автоматическое тестирование c использованием фреймворка Mocha
Полифилы
Объекты: основы
Объекты
Сборка мусора
Тип данных Symbol
Методы объекта, "this"
Преобразование объектов в примитивы
Конструкторы, создание объектов через "new"
Типы данных
Методы у примитивов
Числа
Строки
Массивы
Методы массивов
Перебираемые объекты
Map и Set
WeakMap и WeakSet
Object.keys, values, entries
Деструктурирующее присваивание
Дата и время
Формат JSON, метод toJSON
Продвинутая работа с функциями
Рекурсия и стек
Остаточные параметры и оператор расширения
Замыкание
Устаревшее ключевое слово "var"
Глобальный объект
Объект функции, NFE
Синтаксис "new Function"
Планирование: setTimeout и setInterval
Декораторы и переадресация вызова, сall/apply
Привязка контекста к функции
Повторяем стрелочные функции
Свойства объекта, их конфигурация
Флаги и дескрипторы свойств
Свойства - геттеры и сеттеры
Прототипы, наследование
Прототипное наследование
F.prototype
Встроенные прототипы
Методы прототипов, объекты без свойства __proto__
Классы
Класс: базовый синтаксис
Наследование классов
Статические свойства и методы
Приватные и защищённые методы и свойства
Расширение встроенных классов
Проверка класса: "instanceof"
Примеси
Обработка ошибок
Обработка ошибок, "try..catch"
Пользовательские ошибки, расширение Error
Промисы, async/await
Введение: колбэки
Промисы
Цепочка промисов
Промисы: обработка ошибок
Promise API
Промисификация
Микрозадачи
Async/await
Генераторы, продвинутая итерация
Генераторы
Асинхронные итераторы и генераторы
Модули
Модули, введение
Экспорт и импорт
Динамические импорты
Разное
Proxy и Reflect
Eval: выполнение строки кода
Каррирование
Побитовые операторы
BigInt
Intl: интернационализация в JavaScript
ЧАСТЬ 2
Браузер: документ, события, интерфейсы
Изучаем работу со страницей – как получать элементы, манипулировать их размерами, динамически создавать интерфейсы и взаимодействовать с посетителем.
Документ
Браузерное окружение, спецификации
DOM-дерево
Навигация по DOM-элементам
Поиск: getElement*, querySelector*
Свойства узлов: тип, тег и содержимое
Атрибуты и свойства
Изменение документа
Стили и классы
Размеры и прокрутка элементов
Размеры и прокрутка окна
Координаты
Введение в события
Введение в браузерные события
Всплытие и погружение
Делегирование событий
Действия браузера по умолчанию
Генерация пользовательских событий
Интерфейсные события
Основы событий мыши
Движение мыши: mouseover/out, mouseenter/leave
Drag'n'Drop с событиями мыши
Клавиатура: keydown и keyup
Прокрутка
Формы, элементы управления
Свойства и методы формы
Фокусировка: focus/blur
События: change, input, cut, copy, paste
Отправка формы: событие и метод submit
Загрузка документа и ресурсов
Страница: DOMContentLoaded, load, beforeunload, unload
Скрипты: async, defer
Загрузка ресурсов: onload и onerror
Разное
MutationObserver: наблюдатель за изменениями
Selection и Range
Событийный цикл: микрозадачи и макрозадачи
ЧАСТЬ 3
Тематические разделы
Важные темы, читать которые можно в любом порядке.
Фреймы и окна
Открытие окон и методы window
Общение между окнами
Атака типа clickjacking
Бинарные данные и файлы
ArrayBuffer, бинарные массивы
TextDecoder и TextEncoder
Blob
File и FileReader
Сетевые запросы
Fetch
FormData
Fetch: ход загрузки
Fetch: прерывание запроса
Fetch: запросы на другие сайты
Fetch API
Объекты URL
XMLHttpRequest
Возобновляемая загрузка файлов
Длинные опросы
WebSocket
Server Sent Events
Хранение данных в браузере
Куки, document.cookie
LocalStorage, sessionStorage
IndexedDB
Анимация
Кривые Безье
CSS-анимации
JavaScript-анимации
Веб-компоненты
С орбитальной высоты
Пользовательские элементы (Custom Elements)
Shadow DOM
Элемент "template"
Слоты теневого DOM, композиция
Настройка стилей теневого DOM
Теневой DOM и события
Регулярные выражения
Введение: шаблоны и флаги
Символьные классы
Юникод: флаг "u" и класс \p{...}
Якоря: начало строки ^ и конец $
Многострочный режим якорей ^ $, флаг "m"
Граница слова: \b
Экранирование, специальные символы
Наборы и диапазоны [...]
Квантификаторы +, *, ? и {n}
Жадные и ленивые квантификаторы
Скобочные группы
Обратные ссылки в шаблоне: \N и \k<имя>
Альтернация (или) |
Опережающие и ретроспективные проверки
Катастрофический возврат
Поиск на заданной позиции, флаг "y"
Методы RegExp и String
CSS для JavaScript-разработчика
О чём пойдёт речь
Единицы измерения: px, em, rem и другие
Все значения свойства display
Свойство float
Свойство position
Центрирование горизонтальное и вертикальное
Свойства font-size и line-height
Свойство white-space
Свойство outline
Свойство box-sizing
Свойство margin
Лишнее место под IMG
Свойство overflow
Особенности свойства height в %
Знаете ли вы селекторы?
CSS-спрайты
Правила форматирования CSS