一、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实现 LeetCode 558 四叉树交集(四叉树,第一次遇到,研究了半天)

    558. 四叉树交集 四叉树是一种树数据,其中每个结点恰好有四个子结点:topLeft.topRight.bottomLeft 和 bottomRight.四叉树通常被用来划分一个二维空间,递归地将其 ...

  2. Java实现 LeetCode 367 有效的完全平方数

    367. 有效的完全平方数 给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False. 说明:不要使用任何内置的库函数,如 sqrt. 示例 1: ...

  3. 支持MMDVM的DMR手台

    只要是数字机,都支持,但是,有便宜又好用的吗?当然有,店主做那么久肯定知道哪些机好用 1.MD760(UV双段) 刷固件支持#切换不同的TG,可以手动改机子的DMR ID,可以下载联系人,可以升级!关 ...

  4. 循序渐进VUE+Element 前端应用开发(8)--- 树列表组件的使用

    在我前面随笔<循序渐进VUE+Element 前端应用开发(6)--- 常规Element 界面组件的使用>里面曾经介绍过一些常规的界面组件的处理,主要介绍到单文本输入框.多文本框.下拉列 ...

  5. python—面向对象设计

    一:三大编程范式 1.面向过程编程 2.函数式编程 3.面向对象编程 (类:把一类事物的相同的特征和动作整合到一起就是类,类是一个抽象的概念) (对象:就是基于类而创建的一个具体的事物 [具体存在的] ...

  6. 95题--不同的二叉搜索树II(java、中等难度)

    题目描述:给定一个整数 n,生成所有由 1 ... n 为节点所组成的 二叉搜索树 . 示例如下: 分析:这一题需要对比LeetCode96题来分析:https://www.cnblogs.com/K ...

  7. 5、vue的传值

    1-父组件向子组件  -父组件向孙子组件传值(属性传值) //父组件<template> <div id='app'> <headera v-bind:hea=" ...

  8. Apollo移植

    Apollo移植 环境 平台 ubuntu16.04 Apollo_kernel 1.0 安装步骤步骤 步骤一:安装ubuntu(官方建议使用Ubuntu 14.04.3) 步骤一和步骤二参考文档路径 ...

  9. 如何打包发布加密的 Python 源代码

    这里介绍一种使用 PyInstaller 和 PyArmor 来发布加密 Python 源代码的方式,能够达到以下目的 把所有 Python 源代码打包成为可执行文件,客户不需要 Python 就可以 ...

  10. LR字符串处理函数-lr_eval_string

    char *lr_eval_string( const char *instring ); 主要返回参数的实际内容 Action() { web_save_timestamp_param(" ...