Открытый вебинар «Особенности языка JavaScript» 21.02.2018 в 20:00 | OTUS >
🔥Черная пятница в Отус!
-10% на все курсы ноября и подписку, -15% на курсы декабря до 14.11 →
Выбрать курс
+7 499 938-92-02
Проходил 21 февраля 2018 года в 20:00

Открытый вебинар
Особенности языка JavaScript

Открытый вебинар онлайн

JavaScript не похож ни на один другой язык программирования. Некоторые конструкции языка выглядят аналогичными другим языкам, но означают совершенно другое. Но именно этим JavaScript и прекрасен! Подобные конструкции позволяют писать очень компактный и элегантный код.

Рассматриваем отличия JavaScript от других языков программирования. Также изучаем устоявшиеся идиомы языка, знания которых позволят читать и писать компактный код на JavaScript.

Запись

О курсе

JavaScript Developer. Professional
135 000 ₽
Начало 27 марта 2026 года

Прокачайте свои знания JavaScript для использования всего набора инструментов Fullstack-разработчика. Стек технологий, рассматриваемых в рамках курса, позволяет внести разнообразие в свою работу, открывает возможность участвовать в интересных проектах и стартапах, развивать комплексные проекты для реализации различных задач.

Для кого этот курс?

Курс подойдет разработчикам с опытом программирования на JS, которые знакомы с основами верстки на HTML и CSS. Знания помогут …

Программа курса
Модуль 1
Продвинутые основы JavaScript и TypeScript
Модуль 2
Инфраструктура фронтенда и базовые подходы
Модуль 3
React и экосистема
Модуль 4
Vue и экосистема
Модуль 5
Архитектура и SSR
Модуль 6
Backend, серверные технологии и контейнеризация
Модуль 7
Проектная работа
Продвинутые основы JavaScript и TypeScript
Погружаемся в продвинутые концепции JS: объектно-ориентированное программирование и функциональные подходы. Осваиваем TypeScript – типизацию, интерфейсы, настройку окружения.
Введение в курс: знакомство с программой, командой курса
познакомиться с преподавателем и с программой курса;
вспомнить основы JS.
ООП в JavaScript
познакомиться с основами объектно-ориентированного программирования в JavaScript.
Домашние задания: 1
ДЗ
Глубокое сравнение объектов (deepEqual). Реализовать **функцию глубокого сравнения объектов deepEqual** с использованием принципов ООП (классы и прототипы). Функция должна корректно сравнивать любые вложенные объекты, массивы, примитивы, а также корректно обрабатывать случаи с циклическими ссылками.




Задачи:
1. Создать класс или набор классов, реализующих логику глубокого сравнения объектов.
2. Использовать наследование и/или прототипы для расширения функциональности при необходимости.
3. Покрыть функцию тестами (минимум 5 тестов на разные случаи: примитивы, массивы, вложенные объекты, циклические ссылки, сравнение разных типов).
Основы функциональной разработки
освоить базовые концепции функционального программирования в JavaScript.
Введение в TypeScript: базовые типы, интерфейсы, функции
изучить основы типизации в TypeScript;
освоить типы, интерфейсы и функции.
14 ноября, 20:00 — 21:30
Лектор: Алексей Кадочников
Домашние задания: 1
ДЗ
Глубокое сравнение объектов (deepEqual) на TypeScript. Переписать (или дополнить) функцию глубокого сравнения объектов deepEqual, реализованную ранее на JavaScript, **с использованием TypeScript.** Необходимо добавить строгую типизацию, использовать интерфейсы для описания структур данных и аннотации типов для всех аргументов и возвращаемых значений.



Задачи:
1. Переписать функцию deepEqual на TypeScript, добавить аннотации типов для всех параметров и возвращаемых значений.
2. Использовать интерфейсы или типы для описания структур сравниваемых объектов.
3. Покрыть функцию тестами (минимум 5 тестов на разные случаи: примитивы, массивы, вложенные объекты, циклические ссылки, сравнение разных типов).
4. Оформить пример использования функции с разными типами данных.
Инфраструктура фронтенда и базовые подходы
Разбираем управление состоянием (Redux), клиентский роутинг и принципы построения SPA. Учимся деплоить и настраивать сборку проектов с Webpack, Vite и Rollup.
Управление состоянием приложения, Redux и работа с actions (исторический контекст)
освоить Redux Toolkit.
17 ноября, 20:00 — 21:30
Лектор: Дмитрий Сенькевич
Клиентский роутинг, построение SPA
изучить роутинг и SPA.
21 ноября, 20:00 — 21:30
Лектор: Дмитрий Коляда
Домашние задания: 1
ДЗ
Клиентский роутинг и мини‑SPA. Реализовать **мини‑SPA с клиентским роутингом** (например, React Router) и управлением состоянием (например, Redux Toolkit или Context API). Приложение должно иметь минимум 3 страницы и единое глобальное состояние.



Задачи:

1. Настроить клиентский роутинг с минимум 3 маршрутами.
2. Реализовать глобальное состояние (Redux Toolkit или Context API) и использовать его в нескольких страницах.
3. Добавить форму с управлением данными через глобальный стор.
4. Обеспечить сохранение части состояния в localStorage (например, выбранные настройки).
Особенности деплоя и сборки SPA (CI/CD, Vercel, Netlify)
освоить сборку и деплой фронтенда.
24 ноября, 20:00 — 21:30
Лектор: Виктория Борель
Build tools: Vite, Webpack, Rollup, Web Components
изучить инструменты сборки.
28 ноября, 20:00 — 21:30
Лектор: Дмитрий Сенькевич
Домашние задания: 1
ДЗ
Настройка сборки проекта (Vite/Webpack/Rollup). Настроить **сборку проекта** с использованием современного сборщика. Проект должен собирать HTML, CSS и JS, поддерживать dev‑сервер и иметь минимальную структуру исходников и артефактов.



Задачи:

1. Инициализировать проект и подключить сборщик (Vite/Webpack/Rollup) с dev‑сервером.
2. Настроить сборку HTML, CSS и JS, вынести исходники в src/, сборку в dist/.
3. Подключить линтеры (ESLint/Prettier) и настроить их запуск в CI.
4. Добавить скрипты npm для dev/build/preview, приложить краткую инструкцию в README.
React и экосистема
Изучаем React глубже: работа с хуками, паттернами проектирования и глобальным состоянием (Redux Toolkit, Zustand, React Query). Оптимизация, ленивая загрузка и тестирование React-приложений.
Что такое React, JSX, настройка окружения (повторение ключевых основ)
повторить основы React и JSX.
1 декабря, 20:00 — 21:30
Лектор: Алексей Кадочников
Hooks в React: углубляемся в детали useState, useEffect, useContext и кастомных хуков
изучить продвинутые хуки React.
5 декабря, 20:00 — 21:30
Лектор: Андрей Осипук
Современные паттерны в React: (HOC, Render Props — исторический контекст, фокус на кастомных хуках)
начать использовать паттерны React-разработки.
8 декабря, 20:00 — 21:30
Лектор: Алексей Кадочников
Домашние задания: 1
ДЗ
Современные паттерны в React и кастомные хуки. Реализовать небольшое React‑приложение/фичу, в которой часть логики вынесена **в кастомные хуки**. Допустимы Render Props/HOC как исторический контекст, основной упор — на кастомные хуки.



Задачи:

1. Спроектировать 1–2 кастомных хука для повторяющейся логики (работа с API/формой/подписками).
2. Показать использование хуков в нескольких компонентах.
3. При необходимости продемонстрировать Render Props/HOC как альтернативный подход.
TypeScript в React: типизация компонентов, пропсов и хуков
изучить TypeScript в React.
12 декабря, 20:00 — 21:30
Лектор: Дмитрий Коляда
Состояние приложения в React: Redux Toolkit, Zustand, React Query
научиться управлять состоянием React-приложений.
15 декабря, 20:00 — 21:30
Лектор: Виктория Борель
React Router, ленивая загрузка компонентов, Suspense, оптимизация React-приложения
освоить роутинг и оптимизацию.
19 декабря, 20:00 — 21:30
Лектор: Дмитрий Сенькевич
Домашние задания: 1
ДЗ
React Router, ленивая загрузка, Suspense. Добавить в приложение React **маршрутизацию через React Router**, реализовать ленивую загрузку (lazy/Suspense) для отдельных страниц и хранить глобальное состояние маршрутизации (например, выбранный раздел) в сторе.



Задачи:

1. Настроить React Router с минимум 3 маршрутами, включая параметризованный.
2. Добавить lazy() + Suspense() для ленивой загрузки минимум 1–2 страниц.
3. Хранить часть состояния маршрутизации глобально (Redux/Context) и использовать его в компонентах.
Тестирование React-приложений: React Testing Library, Jest (упоминание E2E-тестирования)
изучить тестирование React-компонентов.
22 декабря, 20:00 — 21:30
Лектор: Александр Литкевич
Домашние задания: 1
ДЗ
Тестирование React-компонентов (React Testing Library, Jest). Для существующих компонентов написать **набор тестов**: рендер, взаимодействие пользователя (user‑events), эффекты и состояния.



Задачи:

1. Настроить Jest + React Testing Library (если не настроены).
2. Написать тесты на рендер и поведение компонентов, включая пользовательские события.
3. Добавить тесты на пограничные случаи и состояния загрузки/ошибки (если применимо).
Консультация по ДЗ
получить ответы на вопросы по ДЗ и по курсу.
26 декабря, 20:00 — 21:30
Лектор: Дмитрий Коляда
Vue и экосистема
Знакомимся с Vue 3: компоненты, реактивность, управление состоянием через Pinia, динамические маршруты и SSR с Nuxt.
Основы Vue3: компоненты, реактивность
изучить Vue-компоненты.
12 января, 20:00 — 21:30
Лектор: Алексей Кадочников
Управление компонентами во Vue: Composition API
изучить Composition API.
16 января, 20:00 — 21:30
Лектор: Алексей Кадочников
Домашние задания: 1
ДЗ
Vue 3 Composition API — структура приложения. Создать фрагмент приложения на Vue 3 с использованием **Composition API.** Вынести бизнес‑логику в композиционные функции и продемонстрировать повторное использование.



Задачи:

1. Создать 3–4 компонента и связать их через пропсы/эмиты.
2. Вынести логику (работа с данными/валидаторы/формы) в use* композиционные функции.
3. Добавить реактивность (ref, reactive, computed, watch).
Состояние приложения во Vue: Pinia (Vuex — исторический контекст)
освоить состояние с Pinia.
19 января, 20:00 — 21:30
Лектор: Виталий Бобров
Routing и Advanced Vue: динамические маршруты, Nuxt (SSR)
изучить продвинутый роутинг Vue.
23 января, 20:00 — 21:30
Лектор: Алексей Кадочников
Домашние задания: 1
ДЗ
Vue Router и Nuxt (SSR). Добавить в Vue‑приложение **динамические маршруты** и интегрировать **Nuxt для SSR** (можно отдельным минимальным проектом на Nuxt 3), продемонстрировав серверный рендеринг и маршрутизацию.



Задачи:

1. Настроить vue-router с параметрами и вложенными маршрутами.
2. Создать минимальный проект на Nuxt 3 с 2–3 страницами (или перенести существующий) и показать SSR.
3. Передать данные на сервере и отрендерить их на странице (fetch/useAsyncData).
Консультация по ДЗ
получить ответы на вопросы по ДЗ и по курсу.
26 января, 20:00 — 21:30
Лектор: Алексей Кадочников
Архитектура и SSR
Изучаем современные подходы к архитектуре фронтенда: микрофронтенды, Monorepo, SSR/SSG. Осваиваем Next.js, Nuxt 3 и другие рендеринг-фреймворки.
Архитектура фронтенд-приложений: микрофронтенды, Monorepo (Nx, Turborepo), принципы SOLID
изучить микрофронтенды, Monorepo и SOLID.
30 января, 20:00 — 21:30
Лектор: Дмитрий Коляда
Современные рендеринг-фреймворки и SSR: Next.js, Nuxt 3, SSG/ISR
освоить серверный рендеринг (SSR).
2 февраля, 20:00 — 21:30
Лектор: Виктория Борель
Домашние задания: 1
ДЗ
Минимальное SSR‑приложение (Next.js/Nuxt 3). Создать небольшой **проект с 2–3 страницами**, серверной загрузкой данных и отображением на странице. Показать маршрутизацию и базовый SSR.



Задачи:

1. Инициализировать проект на Next.js или Nuxt 3.
2. Реализовать 2–3 страницы и маршруты, добавить серверную загрузку данных.
3. Задеплоить приложение (Vercel/Netlify) и приложить ссылку в README/PR.
Backend, серверные технологии и контейнеризация
Создаём API, работаем с REST и RPC, осваиваем Node.js и Nest.js. Подключаем базы данных через PostgreSQL, ORM и Prisma. Интегрируем контейнеризацию с Docker и CI/CD.
Разработка собственного API
создать собственный API.
6 февраля, 20:00 — 21:30
Лектор: Николай Лапшин
REST, RPC и сетевые запросы
освоить сетевые запросы и протоколы.
9 февраля, 20:00 — 21:30
Лектор: Андрей Осипук
Домашние задания: 1
ДЗ
REST API с CRUD (пример: «Клон LeetCode»). Реализовать **REST API** для сущностей «задача» и «пользователь»: создание, чтение, обновление, удаление. Предусмотреть пагинацию и фильтрацию списка задач.



Задачи:

1. Инициализировать серверный проект (Node/Nest/Express — на выбор).
2. Реализовать CRUD для задач и пользователей, продумать DTO/валидацию.
3. Добавить базовые тесты для контроллеров/сервисов.
Введение в Node.js и NPM, работа с браузером
освоить Node.js и NPM.
13 февраля, 20:00 — 21:30
Лектор: Николай Лапшин
Под капотом Node.js: Event Loop, Timers, модули
изучить внутреннюю работу Node.js.
16 февраля, 20:00 — 21:30
Лектор: Александр Литкевич
Продвинутая серверная разработка на Nest.js
освоить Nest.js.
20 февраля, 20:00 — 21:30
Лектор: Николай Лапшин
Базы данных и ORM: PostgreSQL, TypeORM или Prisma в связке с Nest.js
освоить работу с базами данных и ORM.
27 февраля, 20:00 — 21:30
Лектор: Дмитрий Коляда
Домашние задания: 1
ДЗ
База данных и ORM (PostgreSQL + TypeORM/Prisma). Интегрировать **PostgreSQL и ORM** (TypeORM или Prisma): описать модели, миграции и репозитории/сервисы, продемонстрировать базовые операции.



Задачи:

1. Подключить PostgreSQL, описать конфигурацию.
2. Настроить ORM (TypeORM/Prisma), описать модели и миграции.
3. Реализовать сервисы/репозитории и CRUD‑операции с базой.
Контейнеризация (Docker) и интеграция с CI/CD
освоить контейнеризацию и CI/CD.
2 марта, 20:00 — 21:30
Лектор: Андрей Осипук
Проектная работа
Заключительный месяц курса посвящен проектной работе. Это то, чем интересно заниматься студенту на базе знаний, полученных на курсе.
При этом не обязательно закончить его за месяц. В процессе написания по проекту можно получить консультации преподавателей.

Проект должен стать примером кода, который можно показывать потенциальным работодателям.
Вводное занятие по проектной работе. Обзор пройденных фреймворков и технологий
выбрать и обсудить тему проектной работы;
спланировать работу над проектом;
ознакомиться с регламентом работы над проектом.
6 марта, 20:00 — 21:30
Лектор: Алексей Кадочников
Домашние задания: 1
ДЗ
Проектная работа. Проектный модуль (3 занятия):
1. Выбрать тему (индивидуально/команда 2–3) и подтвердить её в чате.
2. После подтверждения — приступить к реализации и сдать готовый проект по согласованному MVP в рамках этого ДЗ.

**Задачи:**

- Выбрать тему и кратко описать ценность/MVP (2–3 предложения). Сообщить в чат для подтверждения.
- Реализовать согласованный MVP (1–2 ключевых пользовательских сценария минимум).
- Подготовить репозиторий: рабочий код и краткий README (цель, стек, запуск).
- Настроить инструменты качества: ESLint/Prettier (линт без ошибок).

**Что нужно сдать (deliverables):**

- Ссылка на репозиторий GitHub (публичный) с готовым проектом по согласованному MVP.
- README: краткая цель, используемые технологии из курса, точные команды запуска (dev/build/serve); при необходимости — .env.example.
- Короткий список реализованных сценариев (1–2 ключевых).
- Настроенные инструменты качества: ESLint/Prettier; проект проходит линт без ошибок.
Карьерная консультация
подготовиться к собеседованиям.
20 марта, 20:00 — 21:30
Лектор: Алексей Кадочников
Защита проектных работ
защитить проект и получить рекомендации экспертов.
6 апреля, 20:00 — 21:30
Лектор: Алексей Кадочников