Современный учебник
JavaScript, который запускается прямо в учебнике
Каждая тема — это текст без воды, редактируемые примеры, видео-разбор и задачи с решениями. От основ языка до TypeScript, React и Node.js.
Начать с первой темы →Оглавление
HTML и CSS по желанию — для тех, кто вёрстку ещё не трогал
- Первый HTML-документ: index.html и базовая структура→
- Скелет страницы: doctype, head и первый файл на диске→
- Смысл вместо div: заголовки и ориентиры страницы→
- Адреса: относительный путь, якорь и ловушка file://→
- Кнопка, ссылка, подпись: соберите из div и посчитайте потери→
- Картинки: место заранее, alt и щель под строчной картинкой→
- Интерактив без скрипта: details, dialog и inert→
- Селекторы и каскад: соберите судью, который решает, чей цвет→
- Свой сброс стилей: что браузер рисует без спроса→
- Коробка и поток: отступы, схлопывание, em и rem→
- position: сдвиг, якорь и значок, улетевший из карточки→
- Flex: делим свободное место своими руками→
- Grid: дорожки, fr и области страницы→
- Адаптивность без экрана: @container против @media→
- Переход: промежуточные кадры рисует браузер→
- @keyframes: движение без повода→
- Переменные, вложенность, color-mix: что CSS забрал у Sass→
- Проект: своя проверка разметки на селекторах→
сам JavaScript: от переменных до асинхронности
DOM, события, формы — как оживить страницу
типы, которые ловят ошибку ещё до запуска
- tsconfig.json: что генерирует tsc --init сегодня→
- strict изнутри: какие проверки он включает→
- Строгость сверх strict: noUncheckedIndexedAccess и exactOptionalPropertyTypes→
- Модули: import type, verbatimModuleSyntax, moduleResolution→
- Перевод JS-проекта на TypeScript→
- typescript-eslint: правила, которых нет у компилятора→
от ручной перерисовки к серверным компонентам
- Серверный компонент: код, который не уехал в браузер→
- Граница 'use client' и почему она заразна→
- Что можно передать через границу→
- Своя граница: писатель, провод, читатель→
- Данные прямо в компоненте: await вместо useEffect→
- Потоковая отдача: страница приходит частями→
- Серверный компонент, SSR и гидратация — три разные вещи→
- Одно дерево тремя способами: payload, HTML, гидратация→
тот же React, но экран вместо страницы
- Сервер — партнёр, а не хозяин: журнал, курсор, приём пачки→
- Цикл синхронизации: отправить, забрать, не задвоить→
- Ответ потерялся: повтор без дублей и без лжи→
- Удаление — это запись: надгробие→
- Кто прав, если оба правы: последняя запись, слияние по полям и часы→
- Свернули и вернулись: процесс вместо вкладки→
- Готовые движки: WatermelonDB и PowerSync→
от своего http-сервера до боевого домена
- HTTP — это текст: разбираем сырой запрос, приходящий кусками→
- Тело запроса: байты, Content-Length, разорванный символ, лимиты→
- Свой маршрутизатор: сегменты, параметры, строка запроса, 404 и 405→
- Конвейер: собираем next() и понимаем, откуда взялся Express→
- Настоящий node:http и восемь дыр вашего сервера→
- Стандартные декораторы: что они делают на самом деле→
- Метаданные без reflect-metadata: свой реестр на WeakMap→
- Собираем контейнер: разрешение вглубь, один экземпляр, токены→
- Границы: свои модули, экспорт и «провайдер не виден»→
- «Nest can't resolve dependencies»: три причины глазами своего контейнера→
- Каркас целиком: контейнер, маршрутизатор и конвейер отвечают 200 и 404→
- Собираем таблицу: строки, индекс, уникальность→
- Транзакция, откат и гонка: собираем CAS-обновление→
- Репозиторий и видимость: страницы, второй ключ сортировки, total→
- Настоящий Postgres: типы, ограничения, EXPLAIN и 23505→
- Схема на TypeScript: как Drizzle выводит типы из таблиц→
- Собираем раннер миграций: журнал, порядок, контрольная сумма→
каждая тема = статья + видео + задачи.
фиолетовая кнопка Run — попробуйте, код правда выполняется