是时候抛弃 ReactJS 或 Angular 并使用更好的 Web 标准(例如 Web 组件)了😍 第 1 部分

2025-05-25

是时候抛弃 ReactJS 或 Angular 并使用更好的 Web 标准(例如 Web 组件)了😍 第 1 部分

到 2019 年,我们都认同组件是构建快速、优雅且可维护 UI 的必由之路。问题在于,每个框架,例如 ReactJS、AngularJS、VueJS 或其他一些小型 UI 框架,都使用自己的模式和解决方案来解决常见问题。这些框架提倡可复用性,并且易于使用。此外,我经常听到的一点是,它们大多由谷歌或 Facebook 等大公司支持。让我们讨论一下这是否属实,社区是否可以做得更好,以及是否有更好的替代方案。

Web 开发处于一个独特的位置。网站、Web 应用程序、PWA 或任何你想称呼它们的东西都在浏览器中运行,最终它们都是 HTML、CSS 和 JavaScript(也许还有 Web Assembly)。因此,目标应该是尽可能熟练地使用这些工具。我的意思并不是说要不使用任何库或框架就使用所有这些工具。你应该使用它们,但如果我们有太多选择会发生什么?过度选择是不可避免的!你会因为选择太多而不知所措。你不是快速,而是缓慢,因为你不知道该使用哪个前端 UI 库。

替代文本

好吧,你现在会想:“我每次都会用 React.js。” 这或许是一个解决方案,也可能是一个完美的解决方案,但 Angular 和其他 UI 框架仍然存在。这意味着我们不是作为一个社区共同协作,而是分裂成一个个小社区。更糟糕的是,你会发现这些工具大多缺乏我们日常使用的功能。在 React.js 中进行路由一点也不好玩。表单验证也不好玩,而且没人愿意做。所以人们需要为这些 UI 框架重新创建库,而大多数情况下只有两三个库可以做这些事情。我们不仅把精力分散到各个 UI 框架组中,而且还再次减少了精力去重复造轮子。想想看,我们作为一个社区已经浪费了多少时间?

我能看出现在人们的想法,但这其实是件好事!真的是这样吗?请谷歌搜索“Linux桌面之年”。桌面Linux也面临同样的问题。Gnome、KDE、XFCE、Cinnamon、Mate、LXDE等等。它们都试图解决一个问题:让Linux桌面变得更好。它们成功了吗?请在下方评论区告诉我。

替代文本

下一点是可复用性。有人还记得从 Angular 1 到 Angular 2 的转变吗?是的,那就像一个完全不同的框架。现在我们有了 Angular 和 AngularJS,这完全不会让人感到困惑。你现在会想:“等等!ReactJS 没有重大变更”。你说得对;它们没有像 React v1 和 React v2 那样的隐式变更!我敢说你敢不敢在 React 代码中不使用 Hooks!一半的评论都会问“你为什么不使用 Hooks??”。当你不得不将 React 代码从基于类的组件重写为基于函数的组件时,也会发生同样的情况。现在我问你一个问题,你必须诚实地面对自己,摘下“我是个开发者,想用这些新奇玩意儿”的帽子,戴上“我想解决真正的问题,给人们他们真正需要的解决方案”。这些变化真的给你的客户、用户和业务带来了任何价值吗?你的代码现在真的更容易阅读了吗?如果你真的诚实面对自己,那么你可能仍然会对基于类的组件感到满意。我想我们现在可以说,我们可能被市场营销欺骗了?

等等,什么?营销跟这有什么关系?看来人们很容易忘记。谁创造了 ReactJS?Facebook,又是谁创造了 AngularJS?谷歌。这些公司以什么闻名?如果你现在说是社交网络和互联网搜索,那你又搞错概念了!他们以广告和营销闻名!如果你想了解一家公司真正在做什么,不是看他们生产什么产品,而是看他们如何赚钱。

“它背后有大公司支持,所以一定很好。”这句话的尾声。我经常听到这样的话,但人们对此却从未认真思考过一秒钟。这句话承诺,即使你使用的框架背后有一家资金雄厚的公司,它也不会有一天消失。谷歌以扼杀项目而闻名。甚至还有一个专门的网站:https://killedbygoogle.com/。不过,你还想用 Angular 吗?好吧,但是 Facebook 呢?Facebook 的很多项目都使用了 React.js。他们也一直在寻找新的工程师,如果加入你团队的人已经了解你正在使用的框架库,那效率岂不是更高?这需要你自己决定。

我希望您现在能够看到我们目前在 Web 开发社区中遇到的一些问题。

我们该如何解决这个问题?我个人认为我们已经找到了解决所有这些问题的正确方法。标准!没错,正确的标准!W3C 是一个优秀的联盟,应该有更多社区成员参与其中。不过,这个话题可以另写一篇博文了。

为什么标准能帮助我们解决所有问题?
当一项技术成为标准时,所有主流浏览器都已实现并准备使用。这意味着,作为一名开发者,我不需要额外的库,也不需要考虑不同浏览器中的极端情况。如果存在错误或问题,那么我们有责任为所有用户修复此错误。因此,修复问题只需要一个人就能完成,而不是成千上万的开发者。这也有助于缓解社区的分裂。如果你可以编写一个组件并在 VueJS、Angular 和 ReactJS 中使用它,那会怎样?那不是很棒吗?这样,更多的开发者就可以在一个日历组件上工作,并使其成为一个优秀的组件,而不是拥有 20 个半生不熟的日历组件?如果所有这些都不需要一家大公司的支持,而是由我们作为一个社区和所有浏览器供应商来支持,那会怎样?

如果这一切都发生了而我们却忘记了怎么办?

是的,我们!这项技术被称为“Web Components v1”。

早在 2014 年,我们社区就应该使用 Web Components 还是 ReactJS 展开了激烈的讨论。正如你现在所知,我们最终选择了 ReactJS。在当时,这或许是正确的选择,因为 Web Components 还太年轻,规范也尚未成熟。这就是我们称之为 ReactJS 的原因,web components v0而且自 2018 年起,我们推出了 v1 版本。现在,除了 Edge 浏览器(当然)之外,所有主流浏览器都接受了这个规范并实现了它。此外,还有一些适用于旧版浏览器的 polyfill。

那么如何使用它们,以及如何将它们集成到您当前的项目中?

由于这篇博文已经很长了,我们下周再讨论这个问题。请继续关注讨论,并在下方留言!

👋问好! Instagram | Twitter | LinkedIn | Medium | Twitch | YouTube

文章来源:https://dev.to/lampewebdev/it-is-time-to-ditch-reactjs-or-angular-and-use-better-web-standards-like-web-components-part-1-3mba
PREV
🎉💻我 2020 年的全新开发设置(VS Code,Windows 10)
NEXT
CSS 快速入门:CSS 变量 - 如何轻松创建🌞白色/🌑深色主题