Программирование
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