广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue和react的区别及优缺点解读
  • 939
分享到

vue和react的区别及优缺点解读

vue和react区别vue和react优缺点vue和react 2023-03-06 11:03:16 939人浏览 独家记忆
摘要

目录Vue和React的区别及优缺点共同点不同点react和vue哪个比较受欢迎,以后主流应该是哪个方向?Vue和React那个更好?为什么react还比vue火总结vue和reac

vue和react的区别及优缺点

共同点

  • 数据驱动视图
  • 组件化
  • 都使用 Virtual DOM

1.数据驱动视图

Jquery时代,我们需要频繁的操作DOM来实现页面效果与交互;而Vue和React解决了这一痛点,采用数据驱动视图方式,隐藏操作DOM的频繁操作。

所以我们在开发时,只需要关注数据变化即可,但是二者实现方式不尽相同。

2.组件化

React与Vue都遵循组件化思想,它们把注意力放在UI层,将页面分成一些细块,这些块就是组件,组件之间的组合嵌套就形成最后的网页界面。

所以在开发时都有相同的套路,比如都有父子组件传递,都有数据状态管理、前端路由、插槽等。

3.Virtual DOM

Vue与React都使用了 Virtual DOM + Diff算法,不管是Vue的Template模板+options api写法,还是React的Class或者Function写法,最后都是生成render函数,而render函数执行返回Vnode(虚拟DOM的数据结构,本质上是颗树)。

当每一次UI更新时,总会根据render重新生成最新的VNode,然后跟以前缓存起来老的VNode进行对比,再使用Diff算法(框架核心)去真正更新真实DOM(虚拟DOM是js对象结构,同样在js引擎中,而真实DOM在浏览器渲染引擎中,所以操作虚拟DOM比操作真实DOM开销要小得多)。

不同点

Vue和React两者虽然都是用于构建用户界面的框架,但是也有很大的差异,首先二者核心的思想就不同。

1.核心思想不同

Vue开发的定位就是尽可能的降低前端开发的门槛,让更多的人能够更快地上手开发。这就有了vue地主要特点:灵活易用地渐进式框架,进行数据拦截/代理,它对侦测数据地变化更加敏感、更精准。

React从一开始地定位就是提出UI开发的新思路。背靠大公司Facebook的React,从开始起就不缺关注和用户,而且React想要做的是用更好的方式去颠覆前端开发方式。所以React推崇函数式编程(纯组件),数据不可变以及单向数据流,当然需要双向的地方也可以手动实现,比如借助onChange和setState来实现。

由于两者核心思想的不同,所以导致Vue和React在后续设计产生了许多差异。

2.组件写法差异

React推荐的做法是JSX + inline style,也就是把 htmlCSS 全部写进 javascript中,即all in js;Vue推荐的做法是 template 的单文件组件格式(简单易懂,从传统前端转过来易于理解),即 html,css,js写在同一个文件(vue也支持JSX写法)。这个差异一定程度上也是由于二者核心思想不同而导致的。

3.diff算法不同

传统diff算法是循环递归每一个节点。将两棵树中所有的节点一一对比需要O(n²)的复杂度,在对比过程中发现旧节点在新的树中未找到,那么就需要把旧节点删除,删除一棵树的一个节点(找到一个合适的节点放到被删除的位置)的时间复杂度为O(n),同理添加新节点的复杂度也是O(n),合起来diff两棵树的复杂度就是O(n³)。传统Diff算法复杂度太高,vue2.x加入了 Virtual Dom 和react拥有相同的diff优化原则(将算法复杂度降为O(n))。

两者流程思路上是类似的:

不同的组件产生不同的DOM结构。当style不相同时,对应DOM操作就是直接销毁老的DOM,创建新的DOM。同一层次的一组子节点,可以通过唯一的key区分。

React的Diff算法核心实现

react首先对新集合进行遍历,for(name in nextChildren),通过唯一的key来判断老集合中是否存在相同的节点。如果没有的话就创建,如果有的话,if(preChild === nextChild)会将节点在新集合中的位置和老集合中lastIndex进行比较,如果 if(child._mountIndex < lastIndex)进行移动操作,否则不进行移动操作。如果遍历的过程中,发现在新集合中没有,但在老集合中有的节点,会进行删除操作。

vue的Diff算法核心实现

updateChildren是vue diff的核心,过程可以概括为:

旧children和新children各有两个头尾的变量StartIdx和EndIdx,它们的两个变量相互比较,一共有四种比较方式。如果四种方式都没匹配,如果设置了key,就会用key进行比较,在比较的过程中,变量会往中间靠,一旦StartIdx > EndIdx表明旧children和新children至少有一个已经遍历完了,就会结束比较。

Vue2的核心Diff算法采用了双端比较的算法,同时从新旧children的两端开始进行比较 ,借助key值找到可复用的节点,再进行相关操作。相比React的Diff算法,同样情况下可以减少移动节点次数,减少不必要的性能损耗,更加的优雅。

4.响应式原理不同

Vue:

  • Vue依赖收集,自动优化,数据可变。
  • Vue递归监听data的所有属性,直接修改。
  • 当数据改变时,自动找到引用组件重新渲染。

React:

  • React基于状态机,手动优化,数据不可变,需要setState驱动新的state替换老的state。当数据改变时,以组件为根目录,默认全部重新渲染,所以React中会需要 shouldComponentUpdate这个生命周期函数方法来进行控制

5.其他不同点

除了上面的四个不同点外,细数还有很多不同点的。比如api的差异也挺大的,Vue为了更加简单易用,引入了指令、filter等概念以及大量的option API,比如 watch、computed等都是非常好用的。

而React得API比较少,如果你的javascript基础比较好,上手也是非常容易的。

react和vue哪个比较受欢迎,以后主流应该是哪个方向?

react是在全球或者说是国际上影响力巨大,尤其是19年推出reacthooks方式具有里程碑意义。

而vue呢具体应该是发展迅速,尤其是是在国内占有巨大的用户群体,框架是学不完的,所以说还是打好原生的基础。推荐可以看看掘金。

Vue和React那个更好?

两个框架各有优点,整体来说React更成熟。

  • 1.VUE主要用模板搭建应用,React要求开发者借助JSX创建DOM。
  • 2.VUE简单上手,中小型项目更适合,大型应用选React。
  • 3.ReactNative更适合原生APP的框架,如果是多端开发,应选择React。

为什么react还比vue火

优势:react前景更好。

并不是说Vue的缺陷,而是想说:使用Vue上手太容易,导致一开始搞前端的人一下子就能看着中文文档搞出SPA,容易产生自信,忽略对周边类库的关注,缺乏对Vue进行贡献的能力。

虽然用户群体多,但有能力进行改造开发或集成其他模块的人并不多,大多属于使用群体,其生态更多的只能依赖尤大,可以想见Vue生态的发展速度不会很快,下次出现更有用的亮点也很可能不会在Vue。

Reduxmobx类数据流管理也先在react上出现,有无数真正乐于开发研究贡献的人在react社区,改进react,增强。react社区才是真正意义上的火。

性能方面我不好定夺,各有优劣开发难度Vue确实简单些维护性差不多react也不是上手成本高,只是想要自己从头构建工程成本高,但并不是一定要自己做,react社区一堆一键安装的工程,只不过不会出现在官网或文档中,造成大部分国人不知道怎么上手。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: vue和react的区别及优缺点解读

本文链接: https://www.lsjlt.com/news/198604.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue和react的区别及优缺点解读
    目录vue和react的区别及优缺点共同点不同点react和vue哪个比较受欢迎,以后主流应该是哪个方向?Vue和React那个更好?为什么react还比vue火总结vue和reac...
    99+
    2023-03-06
    vue和react区别 vue和react优缺点 vue和react
  • vue和react的区别及优缺点是什么
    这篇文章主要讲解了“vue和react的区别及优缺点是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue和react的区别及优缺点是什么”吧!vue和react的区别及优缺点共同点数据...
    99+
    2023-07-05
  • Linux的优缺点以及和windows的区别
    这篇文章主要介绍“Linux的优缺点以及和windows的区别”,在日常操作中,相信很多人在Linux的优缺点以及和windows的区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux的优缺点以及和w...
    99+
    2023-06-04
  • Oracle与MySQL的区别及优缺点
    目录mysqlMySQL的特点MySQL的缺点oracleOracle的特点Oracle的缺点mysql和oracle的区别MySQL与Oracle的应用区别MySQL MySQL的特点 1、性能卓越,服务稳定,很少出现...
    99+
    2022-08-19
    Oracle与MySQL的区别 Oracle与MySQL的优缺点
  • Redis和Memcache以及MongoDb的优缺点与区别
    这篇文章给大家介绍Redis和Memcache以及MongoDb的优缺点与区别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。  memcache、redis和MongoDB都是非关系型...
    99+
    2022-10-18
  • PHP和Node.js区别以及各自的优缺点是什么
    这期内容当中小编将会给大家带来有关PHP和Node.js区别以及各自的优缺点是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。网络正在处于一个日新月异的发展时代。服务器端开发人员在选择语言的时候非常困惑...
    99+
    2023-06-17
  • Java--SSH,SSM和Spring Boot框架区别及优缺点说明
    目录一、SSH(Struts + Spring + Hibernate)1、基本概念2、Struts22、Spring3、Hibernate二、SSM(Spring + Spring...
    99+
    2022-12-21
    Java SSH SSM Spring Boot框架
  • 解读Nginx和Apache的特点与区别
    目录一、Nginx特点二、Apache特点 总结一、Nginx特点 1、轻量级,采用C进行编写,同样的web服务,会占用更少的内存及资源。 2、抗并发,nginx以epol...
    99+
    2023-03-23
    Nginx和Apache Nginx和Apache的特点 Nginx和Apache区别
  • 解读@NotNull和@NonNull的区别及使用
    目录@NotNull和@NonNull区别及使用区别@NotNull使用@NonNull使用Java中容易混淆的一些知识总结@NotNull和@NonNull区别及使用 区别 @No...
    99+
    2023-01-06
    @NotNull和@NonNull区别 @NotNull和@NonNull使用 @NotNull和@NonNull
  • Git和SVN的对比:区别和优缺点是什么
    当涉及到版本控制时,Git和SVN是最流行的选项。但是哪一个更好呢?这是一个值得探讨的话题。在本篇文章中,我们将探讨Git和SVN之间的区别,以及它们的优点和缺点。Git和SVN的区别Git是一种分布式版本控制系统,而SVN则是集中式版本控...
    99+
    2023-10-22
  • 服务器和云服务器的优缺点区别
    云服务器(Cloud Storage)和云服务器都是用于存储和处理数据的服务器设备。它们都需要一定的技术支持和网络连接能力,因此它们有很多优点。 云服务器有以下优点: 快速部署:云服务器可以轻松地为多个用户同时提供服务。用户可以在云服务...
    99+
    2023-10-26
    服务器 优缺点 区别
  • MySQL中varchar(10)和varchar(100)的区别和优缺点
    许多使用MySQL的同学都会使用到varchar这个数据类型。初学者刚开始学习varchar时,一定记得varchar是个变长的类型这个知识点,所以很多初学者在设计表时,就会把varchar(X)的长度设置的非常长,目的也是为了...
    99+
    2019-10-15
    MySQL中varchar(10)和varchar(100)的区别和优缺点
  • 服务器和云服务器的优缺点区别大吗
    云服务器和传统的服务器在一些方面有很多不同,下面列举一些主要的优缺点: 优点: 1. 快速:云服务器提供了一种弹性、低成本、高可扩展的资源池,可以快速扩展,使得服务器可以更快地提供服务。 2. 高可扩展性:云服务器可以轻松地容纳更多的数据...
    99+
    2023-10-26
    服务器 优缺点 区别
  • 服务器和云服务器的优缺点区别在哪
    云服务器(Cloud Drive)是一种云计算服务,它提供了一种虚拟的计算资源,如同虚拟的本地服务器。云服务器可以通过公共云或私人云访问,它允许您将计算资源存储在本地,只需按需添加和配置,无需拥有和维护物理设备。 优点: 高可用性:云服...
    99+
    2023-10-26
    服务器 优缺点 区别
  • 物理服务器和云服务器的优缺点区别
    云服务器和传统的服务器在一些方面存在区别,下面是它们的优缺点: 优点: 弹性扩展:云服务器可以随时根据需要弹性扩展,而不是像传统的服务器那样需要进行频繁的架构升级和扩容。 可靠性高:云服务器可以在极端的情况下,例如自然灾害、网络故障等发...
    99+
    2023-10-27
    服务器 优缺点 区别
  • 本地服务器和云服务器的优缺点区别
    本地服务器和云服务器是两种常见的计算机架构,它们各有优缺点。以下是一些区别: 成本:本地服务器比云服务器更为便宜。但是,与云服务器相比,本地服务器通常需要处理更多的物理资源,因此成本会相对较高。 可用性:云服务通常提供更多的可用性。云服...
    99+
    2023-10-26
    服务器 优缺点 区别
  • Vue读取本地静态文件json的2种方法以及优缺点
    目录Vue读取本地静态文件json使用vue读取本地的静态文件Vue cli获取本地json数据总是404报错vue cli版本查看创建本地json数据Vue读取本地静态文件json...
    99+
    2022-11-13
  • 服务器和云服务器的优缺点有哪些区别
    云服务器和传统的服务器在以下几个方面有所不同: 存储容量:云服务器能够将大量的数据存储在多个服务器上,从而可以为用户提供足够的存储容量。这种灵活性使得企业可以将数据中心转变为一个弹性的资源池,从而可以随时进行扩展或缩减。 性能:云服务器...
    99+
    2023-10-26
    服务器 优缺点 区别
  • 服务器和云服务器的优缺点是什么区别
    云服务器和传统的服务器在以下几个方面存在优缺点: 优点: 1. 性能和资源利用率更高:云服务器采用虚拟化技术,将计算资源整合到一个集中的云服务器池中,可以在相同的硬件资源上提供更高的性能和更快的响应时间。 可靠性和安全性更有保障:云服务...
    99+
    2023-10-26
    服务器 优缺点 区别
  • 服务器和云服务器的优缺点区别是什么
    云服务器和传统的服务器在以下几个方面有所不同: 成本:云服务器的成本更高。因为它们是按需提供计算资源,因此成本很高。如果云服务器不提供服务或服务不足,它们可能会被客户端或云提供商收取费用。 可靠性:云服务器的可靠性是一个主要的考虑因素。...
    99+
    2023-10-26
    服务器 优缺点 区别
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作