<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Vaban Web</title><link>https://vaban.xyz/</link><description>Практические статьи о фронтенде и веб-разработке</description><language>ru</language><item><title>HTML, в котором понятен смысл</title><link>https://vaban.xyz/articles/semantic-html/</link><guid>https://vaban.xyz/articles/semantic-html/</guid><description>Как выбрать между ссылкой и кнопкой, разметить статью и проверить структуру страницы без CSS.</description><pubDate>Mon, 12 Oct 2026 12:00:00 GMT</pubDate></item><item><title>Адаптивная сетка на CSS Grid</title><link>https://vaban.xyz/articles/css-grid/</link><guid>https://vaban.xyz/articles/css-grid/</guid><description>Собираем каталог карточек с auto-fit и minmax: от нескольких колонок до одного столбца на телефоне.</description><pubDate>Mon, 12 Oct 2026 12:00:00 GMT</pubDate></item><item><title>Flexbox: разберитесь с осями</title><link>https://vaban.xyz/articles/flexbox/</link><guid>https://vaban.xyz/articles/flexbox/</guid><description>Почему justify-content и align-items работают по-разному и как собрать устойчивую панель действий.</description><pubDate>Mon, 12 Oct 2026 12:00:00 GMT</pubDate></item><item><title>Первый интерактивный интерфейс без фреймворка</title><link>https://vaban.xyz/articles/javascript-dom/</link><guid>https://vaban.xyz/articles/javascript-dom/</guid><description>Связываем состояние, событие и DOM на примере счётчика. Обновляем текст безопасно через textContent.</description><pubDate>Mon, 12 Oct 2026 12:00:00 GMT</pubDate></item><item><title>Fetch: загрузка, ошибка и отмена запроса</title><link>https://vaban.xyz/articles/fetch-api/</link><guid>https://vaban.xyz/articles/fetch-api/</guid><description>Проверяем response.ok, обрабатываем сбой сети и прерываем слишком долгий запрос с AbortController.</description><pubDate>Mon, 12 Oct 2026 12:00:00 GMT</pubDate></item><item><title>TypeScript: уточняйте типы вместо any</title><link>https://vaban.xyz/articles/typescript-narrowing/</link><guid>https://vaban.xyz/articles/typescript-narrowing/</guid><description>Как unknown и дискриминируемое объединение помогают описать состояния загрузки и убрать лишние проверки.</description><pubDate>Mon, 12 Oct 2026 12:00:00 GMT</pubDate></item><item><title>Vue 3: состояние, которое обновляет интерфейс</title><link>https://vaban.xyz/articles/vue-reactivity/</link><guid>https://vaban.xyz/articles/vue-reactivity/</guid><description>Разбираем ref и computed на фильтре каталога. Храним исходные данные, а результат вычисляем.</description><pubDate>Mon, 12 Oct 2026 12:00:00 GMT</pubDate></item><item><title>Форма, которую можно заполнить с клавиатуры</title><link>https://vaban.xyz/articles/accessible-forms/</link><guid>https://vaban.xyz/articles/accessible-forms/</guid><description>Связываем label и input, добавляем подсказки, сохраняем фокус и показываем понятные ошибки.</description><pubDate>Mon, 12 Oct 2026 12:00:00 GMT</pubDate></item><item><title>Быстрая страница: что измерять первым</title><link>https://vaban.xyz/articles/web-performance/</link><guid>https://vaban.xyz/articles/web-performance/</guid><description>От загрузки главного изображения до отклика на действие: практический порядок работы с производительностью.</description><pubDate>Mon, 12 Oct 2026 12:00:00 GMT</pubDate></item><item><title>HTTP и кеш: почему обновление не видно</title><link>https://vaban.xyz/articles/http-and-cache/</link><guid>https://vaban.xyz/articles/http-and-cache/</guid><description>Разбираем Cache-Control, ETag и имена файлов с хешем, чтобы обновления сайта доходили до браузера.</description><pubDate>Mon, 12 Oct 2026 12:00:00 GMT</pubDate></item></channel></rss>