Почему веб-компоненты не взлетели
Тред из первого дня моей недели в @jsunderhood.
Возможны, вы заметили, что до сих пор я избегал термина “веб-компоненты”. Думаю, тред на эту тему будет не лишним.
— jsunderhood (@jsunderhood) November 9, 2020
Прежде всего, упоминания веб-компонентов ни в одном стандарте вы не найдете. Как и PWA, это "зонтичный термин", под которым в разное время понимались разные черновики спецификаций.
— jsunderhood (@jsunderhood) November 9, 2020
В обоих случаях речь идет о технологиях, продвигаемых Google. Благодаря их, скажем так, агрессивной политике в этой сфере отношение к таким начинаниям часто неоднозначное.
— jsunderhood (@jsunderhood) November 9, 2020
Так или иначе, за последние несколько лет веб-компоненты собрали, пусть и не без оснований, слишком много негатива. И еще, по моим ощущениям, обросли рядом устоявшихся представлений.
— jsunderhood (@jsunderhood) November 9, 2020
Одна из причин негатива — вместе с полезными API, ставившими задачу объяснить устройство HTML, активно навязывались попытки радикально его переосмыслить. Прежде всего, HTML Imports.
— jsunderhood (@jsunderhood) November 9, 2020
HTML Imports вместе со спорными аспектами Shadow DOM оказались камнями преткновения, по вине которых веб-компоненты, доступные за флагом в Firefox, дождались релиза лишь спустя годы.https://t.co/gWgDD4xWbN
— jsunderhood (@jsunderhood) November 9, 2020
Недостаткам ранней реализации, существовавшей только в Chrome и впоследствии печально известной как “версия 0”, посвящен доклад TJ VanToll “Web Components — What’s the Catch?”https://t.co/fe3XV0Xxla
— jsunderhood (@jsunderhood) November 9, 2020
Веб-компоненты "версии 0" были сложными, далекими от реальных проблем (таких, как стилизация select) и во всех браузерах кроме Chrome требовали полифиллов, убивавших производительность.
— jsunderhood (@jsunderhood) November 9, 2020
Вместо того, чтобы сразу признать проблемы, некоторое время команда Chrome делала хорошую мину при плохой игре. Ставка была высока, к тому времени были задействованы немалые ресурсы.
— jsunderhood (@jsunderhood) November 9, 2020
В разное время над DevRel в области веб-компонентов работали Addy Osmani, Eric Bidelman, Rob Dodson, Monica Dinculescu, Mark Dalgleish. Некоторые из них позже дистанцировались от этой темы.
— jsunderhood (@jsunderhood) November 9, 2020
В 2015 году разработчики браузеров смогли достичь компромисса. Основные недостатки были устранены, и в процессе обсуждений отсеялось многое из того, что оказалось лишним.
— jsunderhood (@jsunderhood) November 9, 2020
Jan Miksovsky, один из участников тех событий, написал статью с детальной хронологией и рассказал о том, как были разрешены ключевые противоречия в области Shadow DOM.https://t.co/u0B4cD1DQ6
— jsunderhood (@jsunderhood) November 9, 2020
Но фальстарт, вызванный стремлением Chrome “причинять добро” путем проталкивания сырых API, уже сыграл свою роль. Возник миф о том, что веб-компоненты медленные и бесполезные.
— jsunderhood (@jsunderhood) November 9, 2020
В итоге до сих пор бытует мнение, что Custom Elements и Shadow DOM — детище Google, которое кроме продуктов этой компании (YouTube, интерфейс Chrome) якобы нигде не используется.
— jsunderhood (@jsunderhood) November 9, 2020
Некоторые вообще называют веб-компоненты мертворожденной технологией. Но особенно я был удивлен, увидев их упоминание в одном ряду с Flash (автор цитируемого твита — сторонник React).https://t.co/pjyRv22siX
— jsunderhood (@jsunderhood) November 9, 2020
Ряд компаний, включая и те, где мне довелось поработать, в свое время все же поверили в светлое будущее с компонентами на базе браузерных стандартов. На чем в той или иной степени обожглись.
— jsunderhood (@jsunderhood) November 9, 2020
Но личным опытом разработки на bleeding edge я поделюсь позже. Если, конечно, веселые истории из серии “мыши плакали, кололись” и постмортем пожирания кактуса кому-то интересны.
— jsunderhood (@jsunderhood) November 9, 2020