Открытый вебинар «Особенности языка JavaScript» 21.02.2018 в 20:00 | OTUS >
+7 499 938-92-02
Проходил 21 февраля 2018 года в 20:00

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

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

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

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

Запись

О курсе

JavaScript Developer. Professional
135 000 ₽
4 месяца
Начало 31 октября

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

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

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

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




Задачи:
1. Создать класс или набор классов, реализующих логику глубокого сравнения объектов.
2. Использовать наследование и/или прототипы для расширения функциональности при необходимости.
3. Покрыть функцию тестами (минимум 5 тестов на разные случаи: примитивы, массивы, вложенные объекты, циклические ссылки, сравнение разных типов).
Основы функциональной разработки
освоить базовые концепции функционального программирования в JavaScript.
10 ноября, 20:00 — 21:30
Введение в 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, SvelteKit, 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
Лектор: Алексей Кадочников