🔥

Тред (Сергей Куликов)


Возможны, вы заметили, что до сих пор я избегал термина “веб-компоненты”. Думаю, тред на эту тему будет не лишним.

Прежде всего, упоминания веб-компонентов ни в одном стандарте вы не найдете. Как и PWA, это "зонтичный термин", под которым в разное время понимались разные черновики спецификаций.

В обоих случаях речь идет о технологиях, продвигаемых Google. Благодаря их, скажем так, агрессивной политике в этой сфере отношение к таким начинаниям часто неоднозначное.

Так или иначе, за последние несколько лет веб-компоненты собрали, пусть и не без оснований, слишком много негатива. И еще, по моим ощущениям, обросли рядом устоявшихся представлений.

Одна из причин негатива — вместе с полезными API, ставившими задачу объяснить устройство HTML, активно навязывались попытки радикально его переосмыслить. Прежде всего, HTML Imports.

HTML Imports вместе со спорными аспектами Shadow DOM оказались камнями преткновения, по вине которых веб-компоненты, доступные за флагом в Firefox, дождались релиза лишь спустя годы. hacks.mozilla.org/2014/12/mozill…

Недостаткам ранней реализации, существовавшей только в Chrome и впоследствии печально известной как “версия 0”, посвящен доклад TJ VanToll “Web Components — What’s the Catch?” tjvantoll.com/speaking/slide…

Веб-компоненты "версии 0" были сложными, далекими от реальных проблем (таких, как стилизация select) и во всех браузерах кроме Chrome требовали полифиллов, убивавших производительность.

Вместо того, чтобы сразу признать проблемы, некоторое время команда Chrome делала хорошую мину при плохой игре. Ставка была высока, к тому времени были задействованы немалые ресурсы.

В разное время над DevRel в области веб-компонентов работали Addy Osmani, Eric Bidelman, Rob Dodson, Monica Dinculescu, Mark Dalgleish. Некоторые из них позже дистанцировались от этой темы.

В 2015 году разработчики браузеров смогли достичь компромисса. Основные недостатки были устранены, и в процессе обсуждений отсеялось многое из того, что оказалось лишним.

Jan Miksovsky, один из участников тех событий, написал статью с детальной хронологией и рассказал о том, как были разрешены ключевые противоречия в области Shadow DOM. component.kitchen/blog/posts/a-h…

Но фальстарт, вызванный стремлением Chrome “причинять добро” путем проталкивания сырых API, уже сыграл свою роль. Возник миф о том, что веб-компоненты медленные и бесполезные.

В итоге до сих пор бытует мнение, что Custom Elements и Shadow DOM — детище Google, которое кроме продуктов этой компании (YouTube, интерфейс Chrome) якобы нигде не используется.

I specialized in some losers: Cold Fusion, Flash, web components. But I also got lucky and went big on React early. That single good bet has had ongoing, big returns.
Некоторые вообще называют веб-компоненты мертворожденной технологией. Но особенно я был удивлен, увидев их упоминание в одном ряду с Flash (автор цитируемого твита — сторонник React). twitter.com/housecor/statu…

Ряд компаний, включая и те, где мне довелось поработать, в свое время все же поверили в светлое будущее с компонентами на базе браузерных стандартов. На чем в той или иной степени обожглись.

Но личным опытом разработки на bleeding edge я поделюсь позже. Если, конечно, веселые истории из серии “мыши плакали, кололись” и постмортем пожирания кактуса кому-то интересны.