前言:最近需要使用 react,以前用过 vue,故来总结两者的区别。

首先React与vue有几点相同之处

1.都使用了Virtual DOM

2.提供了响应式(Reactive)和组件化(Composable)的视图组件

3.将注意力集中保持在核心库,而将其他功能如路由和全局状态管理交给相关的库

性能方面

#React在性能方面使用virtual DOM实现没有vue的virtual DOM实现好,相比较来说vue的virtual DOM的实现更为轻量些

#在React应用中,当某个组件的状态发生变化时,它会以该组件为根,重新渲染整个组件子树

如果避免不必要的子组件的重渲染,你需要在所有可能的地方去使用PureComponent,或者手动去实现shouldComponentUpdate方法,同时你可能会需要使用不可变的数据结构来 使你的组件更容易被优化

但是如果在使用PureComponent和shouldComponentUpdate时,需要保证该组件的整个子树的渲染输出都是由该组件的props所决定的,如果不符合这个情况,那么此类优化就会导致难以察觉的渲染结果不一致,使得React中的组件优化伴随着相当的心智负担

在vue应用中,组件的依赖是在渲染过程中自动追踪的,所以系统能精确知晓哪个组件确实被重渲染,可以了解为每个组件都已经自动获得了shouldComponent,并且没有上述子树问题限制

Vue 的这个特点使得开发者不再需要考虑此类优化,从而能够更好地专注于应用本身

开发时性能

显然,在生产环境中的性能是至关重要的,目前为止我们所具体讨论的便是针对此环境。但开发过程中的表现也不容小视。不错的是用 Vue 和 React 开发大多数应用的速度都是足够快的。

当性能在生产中性能是直接与终端用户体验相关的更重要的指标时,表现在开发中仍然很重要,因为它与开发体验密切相关。

然而,假如你要开发一个对性能要求比较高的数据可视化或者动画的应用时,你需要了解到下面这点:在开发中,Vue 每秒最高处理 10 帧,而 React 每秒最高处理不到 1 帧。

这是由于 React 有大量的检查机制,这会让它提供许多有用的警告和错误提示信息。我们同样认为这些是很重要的,但是我们在实现这些检查时,也更加密切地关注了性能方面。

HTML & CSS

  在React中,一切都是JavaScript,不仅仅是HTML可以用JSX来表达,现在的也越来越多地将css也纳入到javascript中来处理

  Vue的整体思想就是拥抱经典的Web技术,并在其上进行扩展

  在 React 中,所有的组件的渲染功能都依靠 JSX。JSX 是使用 XML 语法编写 JavaScript 的一种语法糖

  JSX说是手写的渲染函数有下面这些的优势:

  1.你可以使用完整的编程语言 javascript功能来构建你的视图页面,比如你可以使用临时变量 JS自带的流程控制 以及直接引用当前JS作用域中的值等等

  2.开发工具对JSX的支持相比现有可用的其他VUE模版还是比较先进的如:linting 类型检测 编辑器的自动完成

事实上Vue也提供了渲染函数,甚至支持JSX,然而,我们默认推荐还是template模版,任何合乎规范的HTML都是合法的Vue模版,这也带来一些特有的优势:

  1.对于很多习惯了 HTML 的开发者来说,模板比起 JSX 读写起来更自然。这里当然有主观偏好的成分,但如果这种区别会导致开发效率的提升,那么它就有客观的价值存在。

  2.基于 HTML 的模板使得将已有的应用逐步迁移到 Vue 更为容易

  3.这也使得设计师和新人开发者更容易理解和参与到项目中

  4.你甚至可以使用其他模板预处理器,比如 Pug 来书写 Vue 的模板

我们可以把组件区分为两类:一类是偏视图表现的 (presentational),一类则是偏逻辑的 (logical)。我们推荐在前者中使用模板,在后者中使用 JSX 或渲染函数。这两类组件的比例会根据应用类型的不同有所变化,但整体来说我们发现表现类的组件远远多于逻辑类组件。

CSS的组件作用域

如果不把组件分布在多个文件上的话,在React中作用域内的CSS就会产生警告,非常简单的CSS还可以工作,但是稍微复杂点的,比如悬停状态 媒体查询 伪类选择器要么就要通过沉重的依赖来重做,要么就不能使用

规模方面

向上扩展

Vue和React都提供了强大的路由来应对大型应用,而这些状态管理模式甚至也可以非常容易的集成在 Vue 应用中。实际上,Vue 更进一步地采用了这种模式vuex,更加深入集成 Vue 的状态管理解决方案 Vuex 相信能为你带来更好的开发体验。

Vue和React最重要的差异是,Vue的路由库和状态管理库都是由官方来维护支持并且与核心库同步更新,而React则是选择把这些问题交给社区来维护,因此创建了一个更分散的生态系统,但相对的,React的生态系统相比Vue更加繁荣

最后,Vue提供了Vue-cli脚手架,能让你非常容易地构建项目,包含了Webpack,Browerify,甚至no build system,React在这方面也提供了create-react-app,但是现在还存在一些局限性:

1.它不允许在项目生成时进行任何配置,而 Vue 支持 Yeoman-like 定制

2.它只提供一个构建单页面应用的单一模板,而 Vue 提供了各种用途的模板

3.它不能用用户自建的模板构建项目,而自建模板对企业环境下预先建立协议是特别有用的

而要注意的是这些限制是故意设计的,这有它的优势,例如,如果你的项目需求非常简单,你就不需要自定义生成过程,你能把它作为一个依赖来更新

向下扩展

React学习曲线陡峭,在你开始学React前,你需要知道JSX和ES2015,因为许多事例用的是这些语法,你需要学习构建系统,虽然你在技术上可以用 Babel 来实时编译代码,但是这并不推荐用于生产环境。就像 Vue 向上扩展好比 React 一样,Vue 向下扩展后就类似于 jQuery。你只要把如下标签放到页面就可以运行

本地渲染

ReactNative能使你用相同的组件模型编写有本地渲染能力的APP(ios和Android),能同时跨多平台开发,对开发者是非常棒的

在现在,Weex 还在积极发展,成熟度也不能和 ReactNative 相抗衡。但是,Weex 的发展是由世界上最大的电子商务企业的需求在驱动,Vue 团队也会和 Weex 团队积极合作确保为开发者带来良好的开发体验。

MobX

Mobx 在 React 社区很流行,实际上在 Vue 也采用了几乎相同的反应系统。在有限程度上,React + Mobx 也可以被认为是更繁琐的 Vue,所以如果你习惯组合使用它们,那么选择 Vue 会更合理。

转载自:https://www.cnblogs.com/yeshenyang/p/6992116.html?utm_source=itdadao&utm_medium=referral

总结一下

总结一下,我们发现的,Vue的优势是:

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

  • 简单的语法和项目配置

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

React的优势是:

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

  • 跨平台,Web端和移动端原生APP通吃

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

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

  • 用虚拟DOM实现快速渲染

  • 轻量级

  • 响应式组件

  • 服务端渲染

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

  • 优秀的支持和社区

Vue是一个mvvm的框架,React是前端组件化框架

Vue使用模板,React使用JSX

Vue通过单文件组件,扩展方法的方式实现组件化; React本身就是组件化的。

所以组件化来讲React更彻底

前端框架 vue 和 react 的区别的更多相关文章

  1. 前端两大框架 vue 和 react 的区别

    1. 设计思想 vue: vue的官网介绍说vue是一种渐进式框架,采用自底向上增量开发的设计: react: 采用函数式编程,推崇纯组件,数据不可变,单向数据流: 2. 编写语法 vue: 采用单文 ...

  2. 前端框架vue.js系列(9):Vue.extend、Vue.component与new Vue

    前端框架vue.js系列(9):Vue.extend.Vue.component与new Vue 本文链接:https://blog.csdn.net/zeping891103/article/det ...

  3. 前端框架Angular、react、vue在github上的数据统计-2018-05

    2018年5月31日09:15:45 突然想看看几个前端框架的数量,然后就截图了如下数据: 分析: react关注.收藏.Fork都高vue一些, 但相差不大 angular比较奇葩,收藏只有二者一半 ...

  4. 前端-关于 Vue 和 React 区别的一些笔记

    监听数据变化的实现原理不同 1.Vue 通过 getter/setter 以及一些函数的劫持,能精确知道数据变化,不需要特别的优化就能达到很好的性能 2.React 默认是通过比较引用的方式进行的,如 ...

  5. 前端框架Vue入门

    1.Vue简介 Vue是一套构建用户界面的渐进性框架.Vue采用自底向上增量开发的设计,其关注点在图层,与angular的区别就在这里,它关注的是图层,而angular注释的是数据. 2.与React ...

  6. (转)2018几大主流的UI/JS框架——前端框架 [Vue.js(目前市场上的主流)]

    https://blog.csdn.net/hu_belif/article/details/81258961 2016年开始应该是互联网飞速发展的几年,同时也是Web前端开发非常火爆的一年,Web ...

  7. 可能是目前最完整的前端框架 Vue.js 全面介绍

    Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架. 摘要 2016年最火的前端框架当属Vue.js了,很多使用过vue的程序员这样评价它,“vue.js兼具angul ...

  8. 前端框架 Vue 初探

    一.前言 前几日使用微信网页版时,好奇这个网页用了什么前端框架.用Chrome的开发人员模式一探到底,发现原来用了一个名叫 Angular 的框架.好吧,既然微信用了.那我也最好还是看看.等等,你这篇 ...

  9. vue和react的区别

    数据: vue:双向数据绑定和单向数据流.双向数据绑定:DOM元素绑定的data值,当发生改变后,vue的响应式机制会自动监听data的变化重新渲染.单向数据流:当父组件给子组件传递数据的时候,子组件 ...

随机推荐

  1. Console命令,让js调试更简单

    一.显示信息的命令 console.log("normal"); // 用于输出普通信息 console.info("information"); // 用于输 ...

  2. 900. RLE Iterator

    Write an iterator that iterates through a run-length encoded sequence. The iterator is initialized b ...

  3. eclipse中导入SVN项目步骤

    1.eclipse中安装SVN插件 在线安装步骤: (1)点击 Help --> Install New Software...(2)在弹出的窗口中点击add按钮,输入Name(任意)和Loca ...

  4. Supporting Right-to-Left Languages

    For the most part iOS supports Right-to-Left (RTL) languages such as Arabic with minimal developer e ...

  5. POJ 2245

    //此题一看便是简单的回溯题用DFS+回溯便可以做出来了. #include <iostream> #define MAXN 20 using namespace std; int _m[ ...

  6. POJ 1014

    #include<iostream>#include<stdio.h>#define num 6using namespace std; bool DFS(int i,int ...

  7. “context:include-filter”与“context:exclude-filter”标签作用解释

    注意到spring中<context:component-scan>标签中会出现include和exclude的子标签,具体是做什么用的? spring的配置文件与springmvc的配置 ...

  8. 剑指offer二十四之二叉树中和为某一值的路径

    一.题目 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. 二.思路 详见代码 三.代码 1.解答代码 im ...

  9. Java之IO(二)BufferedInputStream和BufferedOutputStream

    转载请注明源出处:http://www.cnblogs.com/lighten/p/6971234.html 1.前言 本文主要介绍输入输出流中的BufferedInputStream和Buffere ...

  10. sublime text3在交互时解决input()函数无法使用的问题

    1,打开sublime text3工具栏,依次点击View->Show Console菜单打开命令行, 2,在命令行里 输入代码          import urllib.request,o ...