关于react和vue的对比已经很久了,本人一直是react的重度使用者,为了对比vue和react的使用感受,特意了解相关知识,并且搭建了一些简单的demo以做对比,最终整理成文。

至于angular和vue还有react的对比,这里暂时不细聊。最近 小尤和大漠 之间的骂战也终以大漠离职,删除所有文章而告终。其实我想说,技术这东西,有专利,但是彼此都是在相互学习。有借鉴的地方说明你写的好,确实有价值!只要不磨灭的掉别人的价值和付出,全部据为己有,那其实都是可以接受的。开源的环境,本身就是鼓励大家贡献出自己的价值,与大家一起成长。好,言归正传!

首先,说说两个框架的技术栈的基本构成

react:react-redux(mobx)-webpack

vue:vue-vuex-webpack

然后,简单说说两个框架的异同吧

一、相同的部分

1.数据驱动视图,提供响应式的视图组件

2.都有virtual DOM, 组件化开发,通过props参数进行父子组件数据的传递,都实现webComponents规范

3.都支持服务端渲染

4.都有native解决方案,reactnative(facebook团队) vs weex(阿里团队)

二、不同的部分

1.社区:react相比来讲还是要大于vue,毕竟背后支撑团队不 同。facebook vs 个人!当然目前vue的增长速度是高于react的增速,不知道未来的发展趋势是如何。

2.开发模式:React本身,是严格的view层,MVC模式;Vue则是MVVM模式的一种方式实现

3.数据绑定:Vue借鉴了angular,采取双向数据绑定的方式;React,则采取单向数据流的方式

4.数据渲染:对于大规模数据渲染,React要高于Vue一些;但是对于小轻量的,Vue确实更高效

5.数据更新:

Vue采取依赖追踪,默认是优化状态:按需更新;

React在则有两种选择:

1)手动添加shouldComponentUpdate,来避免冗余的vdom,re-render的情况

2)Components 尽可能都用 pureRenderMixin,然后采用 redux 结构 + Immutable.js(感受一波)

三、如何选择使用场景

1)期待模板搭建应用——选择 Vue

Vue应用的默认选项是把markup放在HTML文件中。数据绑定表达式采用的是和Angular相似的mustache语法,而指令(特殊的HTML属性)用来向模板添加功能。

相比之下,React应用不使用模板,它要求开发者借助JSX在JavaScript中创建DOM。

对于来自标准Web开发方式的新开发者,模板更容易理解。但是一些资深开发者也喜欢模板,因为模板可以更好的把布局和功能分割开来,还可以使用Pug之类的模板引擎。

但是使用模板的代价是不得不学习所有的HTML扩展语法,而渲染函数只需要会标准的HTML和JavaScript。而且比起模板,渲染函数更加容易调试和测试。当然你不应该因为这方面的原因错过Vue,因为在Vue2.0中提供了使用模板或者渲染函数的选项。

2)期待简单和“能用就行”的东西——选择 Vue

一个简单的Vue项目可以不需要转译直接运行在浏览器中,所以使用Vue可以像使用jQuery一样简单。当然这对于React来说在技术上也是可行的,但是典型的React代码是重度依赖于JSX和诸如class之类的ES6特性的。

Vue的简单在程序设计的时候体现更深,让我们来比较一下两个框架是怎样处理应用数据的(也就是state)。

React中是通过比较当前state和前一个state来决定何时在DOM中进行重渲染以及渲染的内容,因此需要不可变(immutable)的state。

Vue中的数据是可变(mutated)的,所以同样的操作看起来更加简洁。

让我们来看看Vue中是如何进行状态管理的。当向state添加一个新对象的时候,Vue将遍历其中的所有属性并且转换为getter,setter方法,现在Vue的响应系统开始保持对state的跟踪了,当state中的内容发生变化的时候就会自动重新渲染DOM。令人称道的是,Vue中改变state的状态的操作不仅更加简洁,而且它的重新渲染系统也比React 的更快更有效率。

Vue的响应系统还有有些坑的,例如:它不能检测属性的添加和删除和某些数组更改。这时候就要用到Vue API中的类似于React的set方法来解决。

3)期待应用尽可能的小和快——选择Vue

当应用程序的状态改变时,React和Vue都将构建一个虚拟DOM并同步到真实DOM中。 两者都有各自的方法优化这个过程。

Vue核心开发者提供了一个benchmark测试,可以看出Vue的渲染系统比React的更快。测试方法是10000个项目的列表渲染100次,结果如下图。从实用的观点来看,这种benchmark只和边缘情况有关,大部分应用程序中不会经常进行这种操作,所以这不应该被视为一个重要的比较点。但是,页面大小是与所有项目有关的,这方面Vue再次领先,它目前的版本压缩后只有25.6KB。React要实现同样的功能,你需要React DOM(37.4KB)和React with Addon库(11.4KB),共计44.8KB,几乎是Vue的两倍大。双倍的体积并不能带来双倍的功能。

4)期待构建一个大型应用程序——选择React

像文章开头那种同时用Vue和React实现的简单应用程序,可能会让一个开发者潜意识中更加倾向于Vue。这是因为基于模板的应用程序第一眼看上去更加好理解,而且能很快跑起来。但是这些好处引入的技术债会阻碍应用扩展到更大的规模。模板容易出现很难注意到的运行时错误,同时也很难去测试,重构和分解。

相比之下,Javascript模板可以组织成具有很好的分解性和干(DRY)代码的组件,干代码的可重用性和可测试性更好。Vue也有组件系统和渲染函数,但是React的渲染系统可配置性更强,还有诸如浅(shallow)渲染的特性,和React的测试工具结合起来使用,使代码的可测试性和可维护性更好。

与此同时,React的immutable应用状态可能写起来不够简洁,但它在大型应用中意义非凡,因为透明度和可测试性在大型项目中变得至关重要。

5)期待同时适用于Web端和原生APP的框架——选择React

React Native是一个使用Javascript构建移动端原生应用程序(iOS,Android)的库。 它与React.js相同,只是不使用Web组件,而是使用原生组件。 如果你学过React.js,很快就能上手React Native,反之亦然。

它的意义在于,开发者只需要一套知识和工具就能开发Web应用和移动端原生应用。如果你想同时做Web端开发和移动端开发,React为你准备了一份大礼。

阿里的Weex也是一个跨平台UI项目,目前它以Vue为灵感,使用了许多相同的语法,同时计划在未来完全集成Vue,然而集成的时间和细节还不清楚。因为Vue将HTML模板作为它设计的核心部分,并且现有特性不支持自定义渲染,因此很难看出目前的Vue.js的跨平台能力能像React和React Native一样强大。

6)期待最大的生态系统——选择React

毫无疑问,React是目前最受欢迎的前端框架。它在NPM上每个月的下载量超过了250万次,相比之下,Vue是22.5万次。人气不仅仅是一个肤浅的数字,这意味着更多的文章,教程和更多Stack Overflow的解答,还意味有着更多的工具和插件可以在项目中使用,让开发者不再孤立无援。

这两个框架都是开源的,但是React诞生于Facebook,有Facebook背书,它的开发者和Facebook都承诺会持续维护React。相比之下,Vue是独立开发者尤雨溪的作品。尤雨溪目前在全职维护Vue,也有一些公司资助Vue,但是规模和Facebook和Google没得比。不过请对Vue的团队放心,它的小规模和独立性并没有成为劣势,Vue有着固定的发布周期,甚至更令人称道的是,Github上Vue只有54个open issue,3456个closed issue,作为对比,React有多达530个open issue,3447个closed issue。

补充说明:用最适合自己的,如果已经精通一个,完全没有特别的必要,必须要用另一个,当然学习借鉴是很可以的。

总结:Vue着重提高开发效率,让前端程序员更快速方便的开发应用。React着重于变革开发思想,提升前端程序员编程的深度与创造力,让前端工程师成为真正的程序员而不是UI的构建者

a) Vue的优势是:

模板和渲染函数的弹性选择

简单的语法和项目配置

更快的渲染速度和更小的体积

b) React的优势是:

更适合大型应用和更好的可测试性

Web端和移动端原生APP通吃

更大的生态系统,更多的支持和好用的工具

c) React和Vue都是很优秀的框架,它们之间的相似之处多过不同之处,并且大部分的优秀功能是相通的:

用虚拟DOM实现快速渲染

轻量级

响应式组件

服务端渲染

集成路由工具,打包工具,状态管理工具的难度低

优秀的支持和社区

最后在概括一下大致的使用场景,参考

小、中型应用:vue-webpack更实用

中、大型应用:react-redux-webpack更实用

非应用型网站:看大家自己的喜欢什么就用什么咯

参考:https://medium.com/js-dojo/react-or-vue-which-javascript-ui-library-should-you-be-using-543a383608d#.bsnrb9sap

译文:http://www.jcodecraeer.com/a/javascript/2017/0111/6983.html

其他比较好的推荐文章

http://www.jianshu.com/p/8b94f1b98578
https://cn.vuejs.org/v2/guide/comparison.html

【前端前沿看点】React和Vue深度对比相关推荐

  1. React个Vue的对比

    React 与 Vue 的对比 技术层面 Vue 生产力更高(更少的代码实现更强劲的功能) React 更 hack 技术占比比较重 两个框架的效率都采用了虚拟 DOM 性能都差不多 组件化 Vue ...

  2. 推荐2022前端必看的新书 《Vue.js设计与实现》

    大家好,我是若川.持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列& ...

  3. 【阅读】1235- 推荐2022前端必看的新书 《Vue.js设计与实现》

    本文浮夸班标题 <废物!Vue3源码都不会,还敢去头条面试前端?> 今天推荐一本我认为2022年前端进阶需要看的一本书,来自Vue官方团队成员霍春阳的新书<Vue.js设计与实现&g ...

  4. 【译】前端框架技术选型 React vs. Vue (vs. Angular)

    这是该系列文章的第2部分:"Fundbox的前端技术选型".第1部分介绍了Fundbox的技术现状以及我们重新设计它的动机.第2部分介绍了选择新框架背后的考虑:是迁移到React, ...

  5. 前端三大主流框架React、Vue.js、Angular的优缺点分析

    对于一个前端人员来说,熟练掌握框架可以大大提高开发效率,同时框架也是他们与企业谈判薪资的底气.很多学习前端的人在完成对基础知识的掌握之后都要学习框架,接下来就给大家讲解三大主流框架React.Vue. ...

  6. react angular vue流行度对比

    https://npmcharts.com/compare/@angular/core,vue,react

  7. 【面试题】当面试官让我回答React和Vue框架的区别......

    Vue 和 React 作为当前前端两大火热的框架,面试的时候自然不少被提及: 请说一下你对react/vue框架的理解 请对比一下两大框架的优缺点 其实react和vue大体上是相同的,比如都使用虚 ...

  8. 深度对比学习Vue和React两大框架

    作为国内应用最广的两个框架,Vue 和 React 是前端必须掌握的内容,也是面试的重点.但大多数读者都只擅长其中一个框架,当面试涉及到另一个框架的内容时,就答不好了. 比如虚拟dom,两个框架中都有 ...

  9. 为什么我们放弃了 Vue?Vue 和 React 深度对比

    我使用 Vue 和 React 已经很长一段时间了,两个框架上实践代码量都在 10 万行以上.不得不说两者都是很 nice 的,帮助开发者减少很多工作量,这类框架是现代化前端开发必备的.然而 Vue ...

最新文章

  1. R语言实现sigmoid激活函数并可视化
  2. 【BZOJ-2342】双倍回文 Manacher + 并查集
  3. A-Webkit第五章:添加成绩
  4. mysql如何修改所有的definer
  5. WPF开源项目:WPF-ControlBase
  6. 输入焦点默认指示在编辑框上
  7. Qt学习笔记-各种对话框基本使用
  8. linux-文件的查找-find
  9. 伪指令相当于c语言的什么,ARM汇编中关于“.word”伪指令的概念(转)
  10. 查看被系统或程序打开文件工具 OpenedFilesView
  11. java spark 教程_Spark基础教程——向Spark传递函数(Java篇)
  12. 《Java语言程序设计》✍基础知识整理
  13. 锐捷显示认证服务器不可用,win10系统下锐捷客户端认证失败的解决方法
  14. oracle 11g 映像文件有效 但不适用于此计算机类型,《计算机应用基础》期末考试模拟练习题(含答案)...
  15. office visio连接线控制方法
  16. C++编程笔记(QT)
  17. Metasploit渗透测试魔鬼训练营
  18. HTML我的家乡宁夏学生网页设计作品 dreamweaver作业静态HTML网页设计模板 宁夏旅游景点网页作业制作...
  19. 关于群晖 transmission安装及汉化
  20. 中国教育信息化行业发展价值分析与运营前景展望报告2022版

热门文章

  1. Xorg屏幕旋转实现方式
  2. matlab含未知数矩阵方程组,solve函数求解含有未知数的矩阵方程问题
  3. 亚马逊云科技-游戏孵化营第一课学习心得
  4. 前端基础学习-element-ui表格表头做成斜线表头
  5. 工业农业消防自动检测及报警云方案
  6. 深度学习(一)最通俗易懂的 Transformer
  7. 为什么要隐藏ip地址
  8. 物理光学基础概念总结
  9. Blockchains Distributed L week3 爱宝授课记录(1)
  10. 自定义Xshell颜色主题Color Schemes