Содержание курса:



Модуль 1 Асинхронность и Event Loop - 40 мин



Тезисы: Тут мы рассмотрим все что входит в понятие асинхронность и event loop. Глубоко рассмотрим макро и микро задачи, как создавать свои микро задачи и как с ними работать (queueMicrotask()). Как двигать очередность выполнения кода c помощью requestAnimationFrame и requestIdleCallback. Полностью рассмотрим работу с Promise и какие методы есть.



Модуль 2 Переменные и функции - 55 мин



Тезисы: Тут рассмотрим углубленную работу с переменными и функциями. Как переменная сама по себе храниться. Что вообще такое ссылки и как с ними работать. Области видимости и отличия способов создания. Виды Деструктуризаций. Как создавать функции и в чем отличие будет на практике. Углублено поговорим про контекст. Массив arguments. Стрелочные функции. Замыкания. Каррирование. Задание контекста и узкие моменты



Модуль 3 Подходы к программированию - 15 мин



Тезисы: Тут рассмотрим почему JS мультипарадигменный язык и что за парадигмы в принципе. Как работать с функциональным стилем в JS и что он вообще из себя представляет. Для чего вообще каждый из стилей предназначен. Для чего вообще нужен ООП. Для чего процедурный стиль.



Модуль 4 ООП - 1 час 15 мин



Тезисы: Тут рассмотрим продвинутую работу со всем что касается ООП в JS. Рассмотрим ООП в es6 синтаксисе. Рассмотрим ООП в es5 синтаксисе. Модификаторы доступа. Статические и Приватные поля. Аксессоры. Работа с объектом Object (defineProperty, getOwnPropertyDescriptor и тд.). Полиморфизм. Инкапсуляция. Наследование. Прототипирование. Что такое proto и prototype. Цепочки протоптипов. И все это на практике



Модуль 5 Proxy и Reflect - 35 мин



Тезисы: Полностью рассмотрим что такое Proxy и все его ловушки и как это применить на практике. Рассмотрим для чего нужен Reflect



Модуль 6 Symbol - 20 мин



Тезисы: Рассмотрим продвинуто что такое Symbol, как работать с его методами. Как с помощью Symbol менять поведение типов данных (например: сделать из не итерируемого типа итерируемый, менять поведение переменной в случае если к ней как-то по определенному обращаются и многое другое ). Как с этим всем работать на практике и что вам пригодится в библиотеках.



Модуль 7 Итераторы - 25 мин



Тезисы: Что вообще такое итераторы. Как сделать свой итератор. Итерируемая сущность. Фабрика итераторов. Генераторы. Сложные генераторы. Вложенные генераторы. Куратины. Как с этим работать на практике



Модуль 8 Map Set - 40 мин



Тезисы: Что такое Map Set и для чего они нужны. Какие методы у них есть и как это использовать. Для чего нужны Weakmap и Weakset. Что такое сборщик мусора и как он работает. Для чего нужны WeakRef. Как работать с FinalizationRegistry и что он дает



Модуль 9 Модули - 30 мин



Тезисы: Рассмотрим какие модули вообще были. Что за AMD модули. Что за CommonJs модули. Что за ESM модули. Разные виды импортов и экспортов. Элиасы. Откуда и каким боком тут IIFE. Как с этими всеми модулями работать и какие возможности у них есть. Как все это работает в Браузере и какие особенности в работе есть.



Модуль 10 Подходы и Шаблоны проектирования - 40 мин



Тезисы: Полностью и подробно Solid. Принцип единственной ответственности. Принцип открытости-закрытости. Принцип подстановки Барбары Лисков. Принцип разделения интерфейса. Принцип инверсии зависимостей. Kiss. Dry. Другие подходы. Порождающие шаблоны. Структурные шаблоны. Поведенческие. Фабрика. Синглтон. Прототип. Фасад. Декоратор. Прокси. Итератор. Стейт. Наблюдатель. Чистый Код. Чистая архитектура



Модуль 11 Работа в сети - 45 мин



Тезисы: Что такое HTTP, для чего он и какие версии есть. HTTP 1. HTTP 1.1. HTTP 2. HTTP 3. TCP. UDP. IP. Какие работает HTTPS и откуда TLS/SSL. Как работать с REST. Принципы REST. Методы. Как кешировать ресурсы определенным образом и управлять последовательностью подгрузок на стран