为什么 React 社区没有意识到 Web 组件的重要性
我是一名多面手 Web 开发者,接触过一些库。我不认为自己是任何技术方法的纯粹主义者或布道者,尤其是在前端方面。也就是说,我觉得自己在 Web Components 的争论中没有优势,但我觉得这次讨论很有意思。
最近在一次关于技术趋势的讨论中,我和@bennypowers聊了聊关于 Web 组件的讨论,以及来自 Web 社区的反对意见。无论你对这个问题持何种立场,我都觉得这条评论非常值得一读。
如果您想了解有关 Web 组件的更多信息,Benny 是少数发布有关该主题的精彩教程的 DEV 成员之一。

开始构建 Web Components!第一部分:标准
Benny Powers 🇮🇱🇨🇦 ・ 2018 年 9 月 18 日
#webcomponents #customelements #javascript #html
编码快乐❤️
文章来源:https://dev.to/ben/why-the-react-community-is-missing-the-point-about-web-components-1ic3
依我拙见,React 社区对其库的投入过于沉重。鉴于其库的巨大成功,我可以理解这一点,但我确实认为泡沫最终会破灭。明智的开发者应该开始磨练自定义元素的使用技巧,并在下一个项目中考虑使用它们。
React 与 Web Components 是错误的二分法。
由于 Web 组件是浏览器标准,因此它们在 React 组件中与 React 组件一样可用
div
。由于 React 与 DOM 交互的方式比较特殊,自定义事件有一些小问题需要注意,但也有一条常用的解决方法来规避 React 在这方面的怪癖。顺便说一句,Preact 在很大程度上缓解了这些问题。虽然我认为 Web 组件在技术上优于 React 组件,因为它们原生支持 Web 浏览器,无需开发人员与浏览器对抗,但实际上两者之间并不矛盾。
React 是明天的 MooTools
React 如今确实非常流行,但这并非总是如此。它
<span>
不会消失,也不会消失querySelector
,但我们已经看到许多库框架逐渐被淘汰。与此同时,Web 组件凭借其明显的面向未来的优势,以及浏览器和库之间的互操作性,在企业领域获得了越来越大的关注。如今,Web Components 已得到广泛支持
现在 Firefox 已经支持 Shadow DOM 和自定义元素,Edge 团队也宣布了即将发布的计划,Web 组件标准才真正到来,并成为该平台的一大亮点。我认为,上个月我们在社交媒体上看到大量针对 WC 的批评并非巧合。如今,这些标准的落地对纯 JS 组件模型构成了更严峻的威胁。
围绕WC的FUD是没有道理的
React-world 中许多反对 Web Components 的争论都归结于
但这根本不是事实。现已弃用的 v0 标准不再受支持,它们已被 v1 标准取代,正如我们所见,v1 标准得到了广泛的支持。
虽然标准中描述的低级 API 确实可能很繁琐,但像 hybridsjs 或 lit-element 这样的库和基类可以平滑这些障碍,只会稍微增加 js 页面加载大小。
就功能而言,Web 组件库可以完成 React 的所有功能,甚至更多,而无需 VDOM 开销或由这种抽象带来的认知和工具复杂性——Web 组件开发工具就是浏览器/DOM 开发工具。
轶事
我有个朋友在一家浏览器供应商工作。几年前,他的团队正忙于使用 React.js 构建浏览器 UI 和功能。尽管他称赞了单向数据流与中央存储架构的优雅(现在可以通过 GluonElement 或 LitElement 等自定义元素基类以及 redux 等状态容器轻松实现),但他还是抱怨 React.js 库的性能限制(这是他的话)。我建议他尝试一下 Web Components,因为性能限制在于浏览器本身,而不是 JS 库。他给同事发了个即时通讯。几年过去了,你瞧,这家浏览器供应商目前正在用他们自己的基于 Web Components 的库重写他们的 UI 组件。
概括
React 为 Web 开发社区带来了很多精彩的东西。
但它也带来了很多负担。
如今,您可以构建一个模块化、基于组件的前端应用,无需任何浏览器标志、构建步骤、打包或除浏览器和文本编辑器之外的其他工具。而且它可以在所有主流浏览器上运行。
我很清楚,未来将建立在开放标准之上,而不是定制实现。无论 React 为 Web 社区做出了多少贡献(我希望我清楚地认识到了这些贡献),它都无法与之匹敌。