一、react和vue设计上的共同理念

1、使用 Virtual DOM

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

3、将注意力集中保持在核心库,而将其他功能如路由和全局状态管理交给相关的库(比如我们后面要提到的vue-router、react-router、vue、redux等)。

4、都拥有自己的脚手架,便于用户对于项目基础的搭建(vue-cli和create-react-app)

二、从设计理念上来讲的不同之处

1、React的是采用了函数式的编程思想、是单向数据流,而vue更偏重响应式、数据是可变的。

  • 在react中,数据的流向是单向,也就是说,数据只会从父组件流向子组件。

react在经过setState对数据进行改变后,如果shouldComponentUpdate返回的是true,就继续渲染,如果返回了false,就不会重新渲染。而使用PureComponent就相当于是重写了shouldComponentUpdate,然后在里面作了props和state的浅层对比。

在这里的渲染,会以当前数据改变的组件为根节点,对该子树全部进行重新渲染。但是这个过程中,我们需要保证这颗子树是一个类似纯函数的概念,也就是说,所有的输出都由输入的props来决定,否则通过shouldComponentUpdate和PureComponent进行优化会导致组件有难以察觉的渲染结果不一致。

  • 在vue中,组件的依赖是在渲染过程中自动追踪的。

也就是说,vue会对每一个属性都建立一个监听器,当被监听的属性发生变化时,vue会定位到数据发生变化的组件并且之重新渲染该节点,而不是重新渲染该子树,相当于vue自动为我们做了shouldComponentUpdate的优化。但是随之而来的,当vue中的state越来越多时,vue注册的监听器也越来越多,会导致些许的卡顿。

这也是为什么,我们在构建大型应用时,更偏重选择需要手动优化的react而不是自动优化的vue。但是当我们构建小型应用时,vue的优点是毋庸置疑的。

2、 React 中,所有的组件的渲染功能都依靠 JSX,而vue虽然也提供了函数渲染,但是我们还是更推荐使用模板进行书写

  • react中,所有组件的渲染都是依靠jsx进行的,而jsx的本质是使用 XML 语法编写 JavaScript 的一种语法糖。而他的优点也是显而易见的。

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

开发工具对 JSX 的支持相比于现有可用的其他 Vue 模板还是比较先进的 (比如,linting、类型检查、编辑器的自动完成)。

  • 在vue中,任何合乎html规范的都是合法的vue模板

事实上vue也提供了渲染函数,但是在vue api设计的基础上,模板可以更好地契合vue的各种修饰符,以此可以用更少的代码来实现和jsx相同的功能。

同时模板的易于读懂以及便于迁移的特点,也更加契合用户的使用习惯。

三、从二者的生态圈来看

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

2、虽然vue和react都提供了脚手架以便于开发者快速搭建项目,但是create-react-app相比较vue-cli有更多的局限性。

3、React 学习曲线陡峭,在你开始学 React 前需要预先对jsx以及es6进行一定程度的了解,在这个基础上才能更好的学习react和构建react系统;而vue可能只需要在你了解了vue的文档之后,就可以着手进行项目的开发。

后续会继续升入细化进行两个框架的各方面对比,包括从api和技术选型两个角度来做一个详细的解读

参考文献: https://cn.vuejs.org/v2/guide/comparison.html

vue与react对比总结(一)的更多相关文章

  1. Vue和React对比

    Vue和React对比 Vue也已经升级到2.0版本了,到现在为止(2016/11/19)比较流行的MVVM框架有AngularJS(也有人认为其为MVC).ReactJS和VueJS,这三个框架中, ...

  2. vue与react对比

    相同点 1.都使用 virtual DOM 2.都是组件化开发 or 都提供了组件化的视图组件 3.数据的改变会引起视图的二次渲染 4.都只有骨架,其他的功能如路由.状态管理等是框架分离的组件. 5. ...

  3. vue和react全面对比(详解)

    vue和react对比(详解) 放两张图镇压小妖怪 本文先讲共同之处, 再分析区别 大纲在此: 共同点: a.都使用虚拟dom b.提供了响应式和组件化的视图组件 c.注意力集中保持在核心库,而将其他 ...

  4. Vue与React两个框架的区别对比

    简单介绍 React--Facebook创建的JavaScript UI框架.它支撑着包括Instagram在内的大多数Facebook网站.React与当时流行的jQuery,Backbone.js ...

  5. Vue和React的对比

    今晚我们来搞一搞Vue和React的对比好吧,话不多说今天我们直接开搞可好,各位小老板,开始吧 1. react整体是函数式的思想,把组件设计成纯组件,状态和逻辑通过参数传入, 所以在react中,是 ...

  6. vue 和 react 组件间通信方法对比

    vue 和 react 组件间通信方法对比: 通信路径 vue的方法 react的方法 父组件 => 子组件 props(推荐).slot(推荐).this.$refs.this.$childr ...

  7. vue、react、angular三大框架对比 && 与jQuery的对比

    前端当前最火的三大框架当属vue.react以及angular了. 但是在做项目的时候,我们怎么去选择呢?  这里做一个比较,希望大家可以有一个比较清晰的认识. vue与react vue和react ...

  8. Vue于React特性对比(二)

    一,关于响应式数据更新方式的实现 1)只有在data里面定义的数据才会有响应式更新 vue依赖的defineProperty的数据劫持加上依赖数据,实现数据的响应式更新.可以称之为依赖式的响应.因为依 ...

  9. Vue于React特性简单对比(一)

    一,对象实体对比 vue的对象实体依然是html,而react的对象实体已经变味jsx,一种新的语法结构. vue的html与react的jsx都可以进行拆分,拆分成更细小的组件,组件之间可以传值. ...

随机推荐

  1. Java实现 蓝桥杯 算法训练 大小写转换

    算法训练 大小写转换 时间限制:1.0s 内存限制:512.0MB 提交此题 问题描述 编写一个程序,输入一个字符串(长度不超过20),然后把这个字符串内的每一个字符进行大小写变换,即将大写字母变成小 ...

  2. Java实现 蓝桥杯VIP 算法提高 夺宝奇兵

    算法提高 夺宝奇兵 时间限制:1.0s 内存限制:512.0MB [题目描述] 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: ...

  3. Java实现 蓝桥杯 历届试题 错误票据

    问题描述 某涉密单位下发了某种票据,并要在年终全部收回. 每张票据有唯一的ID号.全年所有票据的ID号是连续的,但ID的开始数码是随机选定的. 因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成 ...

  4. Java实现第八届蓝桥杯购物单

    购物单 题目描述 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打 ...

  5. Oracle数据迁移后由列的直方图统计信息引起的执行计划异常

    (一)问题背景 在使用impdp进行数据导入的时候,往往在导入表和索引的统计信息的时候,速度非常慢,因此我在使用impdp进行导入时,会使用exclude=table_statistics排除表的统计 ...

  6. SimpleDateFormat 和 Calendar 对于时间的处理

    import java.text.SimpleDateFormat;import java.util.Date;public class test { public static void main( ...

  7. Python 读取和输出到txt

    读txt文件 python常用的读取文件函数有三种read().readline().readlines() read() #一次性读取文本中全部的内容,以字符串的形式返回结果 with open(& ...

  8. layui导出表格的两种方法

    一.不熟悉layui小白使用方法 1.引入如下js文件: 2.编写如下函数: 3.表格ID要与函数取值保持一致即可,再就是自定义一个按钮触发事件 二.引入插件使用方法 1.layui官网下载插件包: ...

  9. 在Asp.NET Core中如何优雅的管理用户机密数据

    在Asp.NET Core中如何优雅的管理用户机密数据 背景 回顾 在软件开发过程中,使用配置文件来管理某些对应用程序运行中需要使用的参数是常见的作法.在早期VB/VB.NET时代,经常使用.ini文 ...

  10. 关于"touchstart与click同时触发"问题

    点击事件可以分解成多个事件: 在移动端,手指点击一个元素,会经过:touchstart --> touchmove -> touchend -->  click 由于移动设备能够同时 ...