JavaScript 框架之战已经结束

举报
xcc-2022 发表于 2022/06/14 16:17:53 2022/06/14
【摘要】 JavaScript 框架之战已经结束赢家只有一个。摄影:Markus Spiske on Unsplash选手框架之间的战争是JavaScript社区中的热门话题,也是该行业众多圣战之一。从一开始,随着jQuery,其次是AngularJS到现代框架,战争一直很激烈。许多人已经倒在了这条路上,比如Backbone或Sencha,留下了尸体:大量的遗留代码必须维护。其他幸存下来,比如jQue...

JavaScript 框架之战已经结束

赢家只有一个。

摄影:Markus Spiske on Unsplash

选手

框架之间的战争是JavaScript社区中的热门话题,也是该行业众多圣战之一。从一开始,随着jQuery,其次是AngularJS到现代框架,战争一直很激烈。

许多人已经倒在了这条路上,比如Backbone或Sencha,留下了尸体:大量的遗留代码必须维护。其他幸存下来,比如jQuery,令人惊讶的是,它仍然有一个庞大的社区。其他的,如Angular,似乎没有像预期或承诺的那样起飞。

jQuery

它可能是现存年龄最大的参赛者。它非常受欢迎,因为它修复了浏览器之间的互操作性,但应用程序很难扩展。

如今,jQuery已经不是主流之一,也不是大多数项目的最佳选择。

AngularJS

它已经处于LTS模式,并且已经退休,以支持其老大哥。毫无疑问,这是框架生态系统的一次巨大飞跃,我们中的一些人仍然怀念它。

但是,由于它不再积极维护,因此它不再是参赛者。

它来到世界是为了与 React 竞争。AngularJS正在变老,它有性能问题,健壮性问题,随着React变得更好,许多程序员用羡慕的眼光看待React。Angular 对 AngularJS 进行了现代化改造,以利用 ECMAScript 6 的最后改进,并试图履行与 React 有效竞争的承诺。

Angular最突出的难度是其沉重的学习曲线。它需要很多概念,并不是一切都是直截了当的,它有很多死胡同。很好地学习Angular是很困难的:它继承了AngularJS的学习曲线,但遇到了新的困难,比如RxJS或分层依赖注入。

本·纳德尔的原始照片

Angular的其他担忧是它违背了很多承诺。例如,每个人都期望V2有一个简单的方法来创建服务器端呈现的页面,但是现在,2022年2月24日,Angular.io 网站本身在没有JavaScript的情况下无法工作。

但Angular最大的问题是碎片化和版本升级。升级版本非常困难;它是如此困难,以至于用户不会冒险升级其应用程序。可以在npm网站中看到。

有很多旧版本的用户。

VueJS

Vue是许多开发人员的答案,他们需要比AngularJS更高性能的东西,但比Angular更稳定,更易于使用。Vue在其模板系统中非常接近原始的Angular,保持了AngularJS的简单性,但与此同时,它从React获得了一些功能。

但是 VueJS 在版本 1 和 2 中遇到了一个严重的问题:它不能很好地处理数组,作者指责 JavaScript 对更新算法的选择不佳。如果您不使用像Vuex或Redux这样的库,则可能会遇到严重的问题。你可以在这里看到一个在AngularJS中工作的应用程序,但在VueJS中不起作用。

摘自 Vue 文档,他们指责 JavaScript 存在其更改检测算法的局限性。

从理论上讲,这个问题在版本3中得到了解决。但是,将自己的错误归咎于他人并不适合社区。

Sveltejs

它是战争中不断增长的竞争者,并且正在做出巨大的承诺。它声称它的主要优势是将组件翻译成命令式语言,根据他们的说法,它比React采用的声明性语言更好。

毫无疑问,它使用起来更简单,但是转换为命令式以及由此产生的组件并不像看起来那么容易预测。在某些情况下,SvelteJS无法正确检测变化。发生这种情况时,状态可能会损坏,并且视图未正确更新。这个问题引起了如此多的担忧,以至于很难证明SvelteJS中的任何项目都是合理的,就像过去使用VueJS一样。

https://twitter.com/drpicox/status/1496461071334490112

StencilJS

好吧,从技术上讲,它不是一个框架,尽管它是。StencilJS允许编写组件,并将其转换为其他框架。如今,它将组件转换为Angular,React,Vue和WebComponents组件。

但是,这个类有一些奇怪的东西。这真的类似于另一件事,对吧?

有丝分裂

你可能没有听说过它,但它是让我创建这篇文章的人。有丝分裂是由Angular的创建者Misko Hevery创建的最新框架。没错,Misko在Angular之后创建了另一个框架。

有丝分裂与StencilJS具有相同的目的,它将其组件转换为许多框架。顺便说一句,代码是否类似于任何其他框架?

反应

它是最古老的现代框架之一,在npm存储库中已有10多年的历史。尽管它已经发生了很大的变化,但它仍然与大多数以前的版本兼容。所有的变化都变得更好了。有人说,带有钩子的 React 创建了一个更好的框架。

但 React 的最佳质量不是它有钩子或任何可见的功能,而是相反。React 已经推动了 JavaScript 的最新标准,并推动了 JSX 的发展。React 不再是一个框架,也许它从来都不是,它只是一个库。它如此努力地推动标准,以至于它最终将自己从用户代码中移除。

赢家是...

新浪网.好的,React,但不是React本身,而是背后的哲学。React本身就是一个库,但它可以被许多其他库所取代,比如Preact或React Native。但是如果你仔细观察,StencilJS或有丝分裂与React非常相似,这不是巧合,这是因为:

React 大量利用 JavaScript 和 JSX(嵌入了 XML 的 JavaScript),并且用户代码与 React 非常不可知,只需进行很少的调整,完全相同的代码就可以在其他框架中工作。

因此,毫无疑问,React 是框架战争的赢家。因为它不是用户代码中的框架。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。