这10个热门的JavaScript框架,哪个适合你呢?

多年来,业界已经发布了大量JavaScript框架,怎样进行选择可能是一个挑战。如果你感到困惑,不知道应该选哪个或者究竟哪个适合你,那么这篇文章可以帮你解决问题。在本文中,我将列出用来构建 Web 应用程序的前10个JavaScript框架。

Angular 是最强大、最高效、最开源的JavaScript框架之一。在这个列表中不可能不提及 Angular。该框架由Google 运营,用于开发单页应用(SPA)。这个开发框架之所以出名,主要是因为它为开发人员提供了将JavaScript 与 HTML 和 CSS 结合起来的最佳条件。有超过五十万个网站如 google.com、youtube.com 等正在使用 Angular。

Angular 的主要特性:

MVC 架构:AngularJS 最重要的特性之一是 MVC 架构。 MVC 架构分为三个元素,即模型、视图和控制器。

Model:它是 MVC 架构的最低层级,用来存储数据。

View:负责向用户展示你的所有数据。

控制器:它基本上是用来控制模型与视图之间整个交互的代码。

双向绑定:这是一个令人惊叹的功能,它将 AngularJS 与其他JavaScript框架区分开来。 Angular Data-Binding 在模型和视图之间建立链接。在双向数据绑定过程中,视图会显示在模型中所做的更改,反过来模型反映了在视图中所做的更改。

单页应用:使用 AngularJS 框架,你可以构建完全响应式的单页应用,可以轻松完美地适应不同的屏幕尺寸。与其他网络应用相比,它还能改善用户体验。由于基于 AngularJS 的单页应用是在客户端渲染的,因此它们通过减少 Web 服务器上压力来减少网络流量。

HTML UI:AngularJS 的另一个重要特性是它使用 HTML 语言来构建用户界面。 HTML 语言是一种常见的声明性语言,标签很短,易于理解。这导致了更简单、更有条理的UI。JavaScript接口通常更难以开发和组织。如果你正在寻找一种快速,简单且易于使用的解决方案,那么应该就是它了。

React 是 Facebook 维护的另一个JavaScript库,用于构建交互式和复杂的 UI。它是最热门的框架之一,有超过 3 万个网站使用 React 实现 UI。举几个网站:Microsoft.com、yahoo.com 等。

ReactJS 的主要特性:

Virtual DOM:在React中,对于每个 DOM 对象,都有一个对应的“虚拟 DOM 对象”。虚拟 DOM 对象创建原始 DOM 的虚拟副本。这是一种单向数据绑定,由于修改时不需要实时向屏幕渲染,因此操作虚拟 DOM 比更新原始 DOM 快很多。

JSX:React 使用了 JSX,这是一个使用 HTML 引用的简单 JavaScript,而不是用于模板的 JavaScript。你也可以使用 HTML 语法来渲染子组件,或使用老式的JavaScript编写,这意味着无论采用哪种方式,你都可以灵活地进行编码。

单向数据流:React.js 的设计方式使其只支持在一个流程中向下游传递的数据。如果数据必须向另一个方向流动,则需要其他功能支持。

组件:在React中,所有内容都被视为组件,因此你可以轻松导入 React 支持的组件,而不是编码或构建整个功能,你可以方便的导入并使用它。

Vue是一个用于构建 UI 的开源JavaScript框架。由于它的设计具有适应性,Vue 简化了与其他JavaScript库的项目集成。目前超过 36,000 个网站正在使用 Vue。像 stackoverflow、playstation 等公司依赖 Vue 开发他们的网站界面。

VueJS的主要特性:

模板:Vue.js 提供基于 HTML 的模板,将 DOM 与 Vue.js 实例数据绑定。 Vue.js 将模板编译为虚拟 DOM 渲染函数。 Web 开发人员可以使用渲染函数的模板,并可以使用渲染函数替换模板。

体积小:JavaScript 框架的成功取决于它的大小。个头越小用的人越多。 Vue.js 最大的优势之一是体积小。该框架的大小为 18-21 KB。

适应性:Vue 允许用户用虚拟节点把模版写在 HTML 文件、JavaScript 文件和纯JavaScript文件中。这种灵活性还容易让使用 React.js,Angular.js 和任何其他新JavaScript框架的开发人员理解。它基于JavaScript框架,可以集成到基于JavaScript构建的其他程序中。

详细的文档:开发人员总是喜欢使用带有详细文档的框架,因为他们总是很容易编写自己的第一个应用程序。Vue.js 的文档非常全面,任何对JavaScript和 HTML 有所了解的用户都可以用它开发自己的应用或网页。

Jquery 是最古老的 JS 框架之一。这个框架已经存在了 13 年之久,而且它仍然很强大。那么什么是 jQuery?

jQuery 是一个快速而简洁的JavaScript库,由 John Resig 在2006年创建,它有一个很好宗旨:写得少,做得多。它是一个跨浏览器的JavaScript库,旨在简化 HTML 的客户端脚本。目前有超过 1900 万个网站正在使用jQuery!WordPress、Facebook、Google、IBM 和其他许多公司都依赖 jQuery 提供独一无二的网络浏览体验。

jQuery的主要特性:

DOM操作:它使对 DOM 的操作变得非常容易,使开发人员可以通过易于学习的API(基于顶层 JavaScript)充分利用他们的创造力来创建令人惊叹的东西。

大型社区:其贡献者的社区比任何其他JavaScript库更加庞大和多样化。它有广泛而全面的文档支持,不要忘记,它会不断得到维护,并且会越来越强大。

AJAX支持:简而言之,AJAX(异步JavaScript和 XML)是关于在后台加载数据并将其显示在网页上,而无需重新加载整个页面的技术。 jQuery 为 AJAX 功能提供了好几种方法。通过 jQuery AJAX,你可以用 HTTP Get 和 HTTP Post 从远程服务器请求文本、HTML、XML或JSON。

跨浏览器支持:jQuery 具有跨浏览器支持特性,适用于 IE 6.0 +,FF 2.0 +,Safari 3.0 +,Chrome 和 Opera 9.0+等。

BackboneJS 是一个轻量级JavaScript库,用来开发和构建在 Web 浏览器中运行的客户端应用。与其他框架不同,Backbone 让开发人员负责选择最适合当前项目的工具。目前,超过50万个网站正在使用 Backbone,其中包括tumblr.com、espn.com、soundcloud.com等等。

Backbone 的主要特性:

分离的业务和UI逻辑:Backbone 可以帮助你把自己的业务逻辑与用户界面分开,这是非常重要的一点。当两者纠缠在一起时,修改将会变得很难。当逻辑不依赖于 UI 时,你的界面会变得更加易用。

事件驱动的通信:当项目不断增长时,jQuery 声明和回调将变得更加复杂,代码变得更加混乱。 Backbone.js 通过在视图和模型之间提供事件驱动的通信来克服这个问题。

更少的代码:约定是引入通用编码风格的好方法,而无需提供大量的编码标准。你遵守的 backbone 约定越多,编写代码的次数就越少,反过来代码也会变得更加标准化,并具有可读性。

与后端同步:由于其对 RESTful API 的出色支持,BackboneJS 中的模型可以轻松地与后端绑定。如果 API 设计正确,则 backbone 可以直接通过访问这些操作来进行读取、写入和删除操作。

Node.js 是一个基于 Google Chrome 的JavaScript引擎构建的开源服务器端平台。使用 NodeJS 的网站数量已超过 84,000 个。它是下载量最大的用于执行JavaScript代码的跨平台运行时环境之一。

Node.js 的主要特性:

非阻塞:Node.js 库的所有API都是异步的,即非阻塞的。这意味着基于 Node.js 的服务器永远不会等待 API 返回数据。服务器在调用它之后移动到下一个 API,并且事件的通知机制帮助服务器从先前的 API 调用获得响应。

单线程:Node.js 使用带有事件循环的单线程模型。事件机制可帮助服务器以非阻塞方式响应,从而使服务器具有高度可伸缩性,而传统服务器则创建有限的线程来处理请求。与 Apache HTTP Server 等传统服务器相比,Node.js 使用的单线程程序可以为更多的请求提供服务。

快速:NodeJS 建立在Google Chrome 的 V8 引擎之上。 Google 的 V8 引擎确保 Node.js 库以极快的速度执行其代码。

数据流:NodeJS 程序从不缓冲任何数据,它们只是以数据块的形式输出数据。这样 NodeJS 可以提供更快的服务。

Ember是一个开源的JavaScriptWeb 框架,它允许开发人员通过将最佳实践合并到框架中来构建可伸缩的单页面 Web 应用。 Ember 被评为最佳的JavaScript客户端框架,其主要竞争对手是 React 和 AngularJS。目前超过 6000 个网站正在使用 ember。仅举几例:nasa.gov、tutorialspoint.com 等。

Ember 的一些主要特性:

Web开发的未来:在 BabelJavaScript转换器的帮助下,Ember 允许开发人员使用未来的JavaScript标准并将其进行转换为目前浏览器支持的代码。不知道 Babel 是什么? Babel 是一个JavaScript转换器,允许开发人员现在使用下一代JavaScript代码。另外 Babel 受益于众多插件,并且与 Ember、Rails、Sails 和 Meteor 等框架兼容。

Ember cli:Ember 和 Ember-CLI 完全是两个不同的东西,但如果没有另一个则两者都不完整。 Ember-CLI 是一个命令行实用程序,它与 Ember 框架的软件栈一起提供。 Ember-CLI 是一种强大的生产力工具,支持CoffeeScript、Handlebars、LESS 和 Sass 等。

Ember 模板:Ember 的模板内置于 Ember 的 UI 中,这些模板使用 Handlebars 模板语言编写。 Handlebars 以其使用双花括号命名,它可以使开发人员写更少的代码。模板在 Ember 中提供了许多功能,例如组件、插口和表达式等。

CoC:它的唯一目的是速度和“把事情搞定”的理念,这对于那些总是努力超越竞争对手的初创公司来说是一个巨大的推动力。Ember 有关于其结构的最佳实践,这意味着开发人员可以更专注于实现业务,而不是通过繁琐的代码重新发明轮子。有更多的成果,而不是蓝图。

Meteor 是一个用 NodeJS 编写的免费开源JavaScript框架。它允许进行快速原型设计并生成跨平台代码。它在市场上越来越受欢迎,超过 13,000 个网站使用了 Meteor。像mtv.com、meteofrance.com等网站利用 Meteor 来构建他们的用户界面。

Meteor 的主要特性:

全栈:Meteor 为开发和部署 Web 应用提供了全栈解决方案。 Meteor 捆绑了几个内置功能,如反应式模板、自动 CSS 等。

智能包:为你的应用开发登录系统可能会很麻烦。但 Meteor 不会。 Meteor 软件包可以轻松添加用户帐户,还有 React 之类的JavaScript库等。最好方便的是,添加这些类型的智能包很容易,只需在终端中敲几下键盘就可以了。

实时网络应用:Meteor 是构建实时程序的完美解决方案。从数据库到模板所有的层都会自动更新。这意味着无需刷新页面即可查看更新。对文档的任何修改都会立即保存。这使得 Meteor 成为实时协作的完美解决方案。

单一语言开发:Meteor 允许在前端和后端使用相同的代码,可用于移动和 Web 应用。它可以杜绝安装和配置不同的库、模块管理器、API、驱动程序等。这大大的节省了开发人员的时间,因为他们不需要在服务器语言和JavaScript之间执行上下文切换。

Polymer 是一个由 Google 维护的开源JavaScript库,用于使用 Web 组件构建 Web 应用。目前,有超过3000个网站正在使用聚合物,比如virustotal.com、rogers.com、zeplin.io等。

与其他JavaScript框架不同,Polymer 让开发人员构建组件时去利用 Web 中存在的功能。它是第一个利用 Web 组件来对应用进行交互式构建的库。

Polymer 的关键特性:

Web 组件:Polymer 构建在 Web 组件的思想之上。 Web 组件是一组 w3c 标准,由几种不同的 Web 技术组成,其中包括自定义元素。这些组件是浏览器的一部分,所以你不需要任何第三方工具和库,比如 jQuery。

单向和双向数据绑定:它提供单向和双向数据绑定。Polymer 旨在支持在单向和双向流动的数据。

本机浏览器:Polymer 使用本机浏览器技术,而不是依赖于自定义JavaScript库。Polymer 的 DOM 层最接近本机JavaScript层。

自定义元素:它允许使用 HTML、CSS 和JavaScript轻松创建自定义元素,以便向元素添加交互。 Polymer.js 提供了创建自定义 HTML 元素的最简单方法,因为它的库是基于 Web 标准 API 构建的。

Aurelia 是一个开源的现代JavaScript模块工具箱,其有助于 Web 和移动应用程序的发展。它也被称为“下一代框架”。该框架自推出以来一直受到广泛认可。 Fileee、Freska、Ordami 和 BTEK Software 等公司以及800多个网站都使用了 Aurelia。

不要忘记,Aurelia 是唯一允许开发人员使用原生 TypeScript 或JavaScript构建组件的框架。

下面列出了 Aurelia 的一些主要功能:

多语言支持:Aurelia 的 API 经过精心设计,可以用于当今和未来最实用的 Web 编程语言。 Aurelia 支持 ES5、ES2015、ES2016 和 Typescript,它非常有用,并能够为你提供高度的灵活性。

模块框架:Aurelia 不是采用单一框架的方式,而是由较小的、专注的模块组成。把它们放在一起可以组成功能齐全的框架,也可以通过自定义构建可选择的方案。

整洁的文档:Aurelia 提供了一个非常详细并有用的文档集,可以帮助所有的开发人员。它以良好的文档维护而闻名。

可扩展的 HTML:Aurelia 的可扩展 HTML 编译器允许你创建自定义 HTML 元素,可以向现有元素中添加自定义属性并控制模板生成,所有这些都完全支持动态加载、数据绑定和高性能批量渲染。

以上介绍了10个最受欢迎的JavaScript框架,以及它们的主要特征和功能,希望对大家学习Web前端有所帮助。想了解更多的Web前端知识,可以关注我,会定期为大家分享最新Web前端面试题、发展趋势、学习资料,助力大家学好Web前端。

————————————————

版权声明:本文为CSDN博主「戏精程序媛」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/xiaoxijing/java/article/details/106665572

2023十大优秀JS框架深度分析

现如今,随着Web2.0如火如荼的发展,JS语言从最初的客户端脚本语言,到现在支持服务的开发的语言,俨然已成为最优秀的语言之一。这里,我们将讨论10大优秀JS框架,分析他们的特性以及优缺点。

十大优秀JS框架

Angular是最强大的JavaScript框架之一,用于开发单页应用程序(SPA)的开源框架。

特性:

  • 渐进式Web应用程序:具有现代Web平台功能,可提供高性能、离线和零步骤安装的类似应用程序的体验。
  • 桌面:可以创建Mac、Windows和Linux上的桌面应用程序。
  • 代码生成:可以生成高度优化的代码,从而带来了手写代码的好处。
  • 代码拆分:通过新的组件路由器,angular应用程序可以快速加载,实现自动代码拆分。
  • 模板:使用简单而强大的模板语法创建UI视图。
  • Angular CLI:命令行工具允许您快速开始构建、添加组件和测试,然后立即部署。
  • 动画:通过Angular的直观API,用很少的代码创建高性能、复杂的舞蹈编排和动画帧。
  • 可访问性:使用支持ARIA的组件、开发人员指南和内置基础设施创建可访问的应用程序。

由Facebook创建的React框架很快就获得了欢迎。它用于开发数据量大的动态页面。它使用了虚拟DOM,因此与任何应用程序的集成都非常简单。

特性:

  • 声明性:为网站和移动应用程序创建交互式和动态UI。声明性视图使代码可读且易于调试。
  • 虚拟DOM:对于每个DOM对象,都有一个对应的“虚拟DOM对象”。它创建原始DOM的虚拟副本,是DOM对象的表示。
  • 事件处理:React创建了完全兼容的W3C对象模型事件系统。它还提供了本机事件的跨浏览器界面。
  • JSX:JSX是一种非常类似HTML的标记语法。JSX语法与注入到网页中的HTML几乎相同,使编写React组件变得更容易。
  • 性能:React使用单向数据绑定和名为Flux控件的应用程序架构。ReactJS通过Flux控制应用程序工作流帮助用户更新视图。
  • React Native:React Native是React的自定义渲染器;它使用本地组件而不是像React这样的web组件作为构建块。
  • 基于组件:所有内容都是网页的一个组件,分为几个小组件来创建视图。ReactJS中的组件用于定义应用程序中的视觉效果和交互。

该框架于2016年开发,由尤大神开发,性能表现优异。现在已经成为最火的前端框架之一。其双重绑定模式是构建SPA的最吸引人的特点之一。它是跨平台开发的可靠平台。

特性:

  • 虚拟DOM:Vue.js使用虚拟DOM,即主要DOM元素的拷贝。
  • 数据绑定:对HTML属性的值进行操作或赋值。
  • 模板:Vue提供基于HTML的模板,将DOM与Vue.js实例数据绑定。模板被编译成虚拟DOM渲染函数。
  • 复杂性:Vue.js在API和设计方面更简单。web开发人员可以在一天内构建简单的应用程序。

Ember.js于2015年问世,此后,它凭借其广泛的应用范围而广受欢迎。Ember.js的特性支持双向数据绑定,这使其成为处理复杂用户界面的可靠平台。LinkedIn、Netflix和Nordstrom等热门网站在其站点使用了Ember.js。

特性:

  • 易用性:创建易于维护的可用web应用程序。
  • HTML和CSS特性:它以开发模型的HTML和CSS为核心。
  • 实例初始化器:Ember为类提供实例初始化器
  • 路由:Ember.js提供的路由是用于管理URL的核心功能。
  • 调试:Ember.js具有用于调试Ember应用程序的EmberInspector工具。
  • 模板化:Ember.js使用的模板有助于在应用程序内容发生更改时自动更新模型。

Meteor有几种不同的用途,涵盖了软件开发的重要部分。用途包括后端开发、数据库管理、业务逻辑和前端呈现。

特性:

  • 全栈解决方案:Meteor被证明是开发和部署web应用程序的全栈解决方法。功能包括在生产服务器上的自动CSS、反应式模板和JS压缩。
  • 开发生态系统:Meteor.js是一个开源的同构开发生态系统。它有助于从头开始构建实时web应用程序,因为它包含所有必要的前端和后端组件。。
  • 同构JavaScript代码:相同的代码可以用于前端、后端以及移动和web应用程序。它使开发人员无需安装和配置不同的模块管理器、库、驱动程序、API等。
  • 前端解决方案:Meteor提供了一个前端开发框架Blaze.js,它提供了许多有用的功能。它还与流行的现代前端框架(如Backbone.js)集成,以产生更好的结果。
  • 数据库集成:Meteor.js支持任何带有Node.js驱动程序的数据库。MongoDB是最常用的。

Mithril是一个客户端JavaScript框架,主要用于开发单页应用程序。由于没有从基类派生的函数,因此框架的实现更加简单。它体积小(小于8kb gzip),速度快,提供了现成的路由和XHR实用程序。

特性:

  • 代码大小:Mithril的gzip大小约为7.8kB,不依赖于其他库。
  • 体系结构:Mithril不提供可扩展的基类。在实现核心MVC模式时,没有隐藏的性能成本。
  • 小型API:Mithril提供了一个紧凑的API,因此,不需要为每个场景构建功能。
  • 声明性:Mithril是声明性的,并降低了代码复杂性。

Node.js是一个服务器端JavaScript运行时环境,可以跨平台运行,并且是开源的。该框架能够通过其事件驱动架构驱动异步I/O。

特性:

  • 快速:Node.js库在代码执行方面速度很快,因为它是基于Google Chrome的V8 JavaScript引擎构建的。
  • 异步和事件驱动的I/O:所有API都是异步的,这意味着其服务器不会等待API返回数据。
  • 单线程:Node.js和事件循环遵循单线程模型。
  • 高度可扩展性:Node.js遵循一种事件机制,使得服务器可以以非阻塞方式响应,这使得它具有可扩展性。
  • 无缓冲:当上传音频和视频文件时,Node.js显著减少了处理时间。它不缓冲任何数据,应用程序以块的形式获取数据。
  • 开源:由于是开源的,Node.js社区已经提出了几个令人惊叹的模型,可以用来为Node.js应用程序添加更多功能。

Polymer是谷歌开发的一个开源JavaScript库,它可以创建网站的元素而不会变得太复杂。它还支持单向和双向数据绑定,这使它具有更广泛的应用领域。

特性:

  • Polyfills:Polymer具有Polyfill功能,用于创建自定义和可重复使用的元素。
  • 可重用性:s用于在web文档和应用程序中创建可重用的小部件。
  • 适用于移动应用程序:Polymer使用Google Material设计开发移动应用程序,以实现快速且易于开发的移动应用程序。
  • 灵活性:自定义元素分布在整个网络中,允许用户在HTML引入下使用这些元素。

Aurelia框架虽然不像以前那样流行,但它对于开发更强大的网站非常有用。这个JS框架可以基于多种目的扩展HTML,包括数据绑定。

特性:

  • 组件:组件是Aurelia框架的构建块,由JavaScript模型和HTML视图组成。
  • Web标准:它是最干净的现代框架之一。它完全专注于web标准,没有不必要的抽象。
  • 可扩展:该框架提供了一种与其他工具集成的简单方式。
  • 商业支持:此框架提供商业支持。

Backbone用于创建单页应用程序。该框架的开发使用了这样一种思想,即所有服务器端函数都必须通过API,这有助于用更少的代码实现复杂的功能。

特性:

  • 方便性:为组装客户端web应用程序提供了模型、视图、事件、路由器和集合等构建块。
  • 易于使用的库:它是一个简单的库,有助于分离业务和用户界面逻辑。
  • 许多扩展:Backbone有一个免费的开源库,包含100多个可用的扩展。
  • 依赖性:Backbone对jQuery具有软依赖性,对Undercore.js具有硬依赖性。
  • 有组织的开发:Backbone允许您以结构化和有组织的格式创建客户端web应用程序或移动应用程序。

喜欢请关注点赞收藏!

JavaScript 框架大战已结束,赢家只有一个

框架之战是 JavaScript 社区中的热门话题,也是业界众多圣战之一。一开始,jQuery 崭露头角,接下来 AngularJS 初露锋芒,再到现代框架混战,战争一直很激烈。然而现在框架之战已经结束,是谁赢得了最终的胜利,它又是凭什么取胜,且看本文分解。

框架之战是 JavaScript 社区中的热门话题,也是业界众多圣战之一。一开始,jQuery 崭露头角,接下来 AngularJS 初露锋芒,再到现代框架混战,战争愈演愈烈。

如今,似 Backbone 或 Sencha 之流,许多竞争者已经马革裹尸倒在路边:只留下大量必须维护的遗留代码。如 jQuery 等其他幸存者,仍然有着庞大的社区,实在令人惊讶。其他如 Angular,似乎也未像预期或承诺的那样一飞冲天。

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

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

复制代码

它处于 LTS 模式,并且为了支持其老大哥已经退居二线。不过毫无疑问,它曾是框架生态系统一次巨大的飞跃,很多人仍然怀念它。

但是,由于它不再被积极维护,因此它不再是竞争者。

复制代码

它的出现是为了与 React 一决雌雄。AngularJS 已经老了,它存在性能和健壮性问题,而随着 React 变得越来越好,许多程序员对其投出艳羡的目光。因此,Angular 利用 ECMAScript 6 的改进对 AngularJS 进行了现代化改造,试图履行与 React 的决战之约。

复制代码

Angular 最突出的困难是其陡峭的学习曲线。它需要了解很多概念,而且并不是一下子直截了当给你的,很多时候会把你绕进死胡同。学好 Angular 是很困难的:它继承了 AngularJS 的学习曲线,但又有新的困难,比如 RxJS 或分层依赖注入。

本·纳德尔提供原始照片。

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

然而这还不是 Angular 的最大的问题,它最大的问题是碎片化和版本升级。升级版本非常困难,以至于用户不敢冒险升级其应用程序。

在npm官网中可以看到有很多旧版本的用户。

Vue 是许多开发人员的答案,因为他们需要比 AngularJS 性能更高的、更稳定的,且更易于使用的框架。Vue 的模板系统非常接近原始的 Angular,也保持了 AngularJS 的简单性,与此同时,它又从 React 获得了一些能力。

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

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

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

复制代码

毫无疑问,它使用起来更简单,但是转换为命令式以及由此产生的组件并不像看起来那么容易预测。在某些情况下,SvelteJS 无法正确检测变化。发生这种情况时,状态可能已经被破坏了,而视图却未正确更新。这个问题引起了很多关注,所以很难证明 SvelteJS 中的任何项目都是合理的。

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

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

复制代码

但是,这个类有一些奇怪的地方。它和另一个东西很相似,对吧?

你可能没有听说过它,但正是因为它让我写下了这篇文章。Mitosis 是由 Angular 的创建者 Misko Hevery 编写的最新框架。没错,它是 Misko 在 Angular 之后创建的另一个框架。

复制代码

Mitosis 与 StencilJS 具有相同的目的,它将其组件转换为许多框架。顺便说一句,代码是不是与其他框架有点像?

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

复制代码

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

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

“最好的框架是将自己从用户代码中删除的框架。“ ——勇于改变,才是更明智的决定

React 大量利用 JavaScript 和 JSX(嵌入了 XML 的 JavaScript),用户代码是 React 无关的,只需进行很少的调整,几乎完全相同的代码就可以在其他框架中运行。因此,毫无疑问,React 是框架之战的赢家。因为它不是用户代码中的框架。

注意:我最近发现了一个视频:https://www.youtube.com/watch?v=4anAwXYqLG8。他将 React 描述为一个尽可能降低影响的库,这正是我编写本文的原因。我感到很沮丧,因为我花了 8 年时间才理解它。这就是为什么有这么多框架看起来像 React 的原因,因为它不是 React,它是 JavaScript。

The JavaScript framework war is over

冬雨,小小技术宅一枚,现从事研发过程改进及质量改进方面的工作,关注研发、测试、软件工程、敏捷、DevOps、云计算、人工智能等领域,非常乐意将国外新鲜的 IT 资讯和深度技术文章翻译分享给大家,已翻译出版《深入敏捷测试》、《持续交付实战》。

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。