Введение: Одиночество веб-стандартов в мире фреймворков
Представьте, что вы покупаете мощный спорткар с автопилотом, климат-контролем и гоночным двигателем, но вместо этого заталкиваете его в прицеп и нанимаете лошадь, потому что «так привычнее управлять поводьями» (а главное — точно заведется на вашей машине). Именно так сегодня выглядит веб-разработка: обладая браузерами-монстрами с поддержкой WebGL и фоновых воркеров, мы продолжаем тянуть в продакшен мегабайты JS-абстракций для вывода простого текста. Почему так происходит и когда индустрия наконец повернется лицом к нативным фичам — давайте разбираться прямо сейчас.
Современная веб-разработка переживает парадоксальный период. С одной стороны, веб-платформа (HTML, CSS и JavaScript API) никогда прежде не была столь мощной. Браузеры сегодня — это полноценные виртуальные машины, способные рендерить сложную 3D-графику через WebGL, обрабатывать данные в фоновом режиме с помощью Service Workers и Web Workers, а также предоставлять доступ к аппаратным датчикам устройств. С другой стороны, большинство разработчиков предпочитают абстрагироваться от этих возможностей за массивными слоями фреймворков, библиотек и транспиляторов.
Крылатая фраза «Use the platform» («Используй платформу») долгое время была мантрой инженеров из команд браузеров и технологических евангелистов. Она призывает опираться на нативные возможности браузера вместо того, чтобы изобретать велосипеды на JavaScript. Тем не менее, индустрия упорно движется в противоположном направлении. Согласно актуальным данным исследований Stack Overflow Developer Survey и JetBrains The State of Developer Ecosystem, экосистема фронтенда продолжает обрастать сложными зависимостями, а средний вес бандлов исчисляется мегабайтами даже для простейших лендингов.
Почему же так происходит? Действительно ли разработчики ленивы, или за отказом «использовать платформу» стоят глубокие системные, экономические и психологические причины? В этой статье мы подробно разберем факторы, удерживающие индустрию от массового перехода на чистые веб-стандарты.
Анатомия тренда: Что значит «использовать платформу»?
Прежде чем искать причины игнорирования стандартов, давайте на секунду отвлечемся от привычного стека и четко определим термин. Понимание этой базы поможет взглянуть на привычные компоненты под совершенно новым углом.
«Использовать платформу» означает писать код, который максимально опирается на спецификации W3C и WHATWG, исполняясь в браузере без промежуточных тяжеловесных абстракций. Это отказ от виртуального DOM в пользу нативного манипулирования, использование современных возможностей CSS вместо кастомных сеток на JS, а также применение встроенных элементов управления вроде тегов <dialog>, <details> или Web Components.
Яркий пример исторического несоответствия — нативные элементы форм и выпадающие списки. Долгое время стилизация тега <select> была настоящей болью для фронтендеров. Платформа не предоставляла гибких средств кастомизации, из-за чего разработчики массово перешли на сторонние UI-библиотеки с кастомными выпадающими списками на DIV-ах и слушателях событий клавиатуры (и добавлением еще трехсот килобайт зависимостей ради красивой стрелочки).
<!-- Нативный подход: семантично, доступно, работает «из коробки» -->
<details>
<summary>Показать детали конфигурации</summary>
<p>Здесь содержится конфиденциальная информация о сборке.</p>
</details>
<!-- Фреймворк-подход: избыточный JS для создания аналогичного поведения -->
<div x-data="{ open: false }">
<button @click="open = !open">Показать детали конфигурации</button>
<div x-show="open">Здесь содержится конфиденциальная информация о сборке.</div>
</div>
Основные причины игнорирования стандартов
Индустрия не выбирает сложные пути просто так. За массовым переходом на фреймворки стоит несколько объективных причин:<