一,关于响应式数据更新方式的实现

1)只有在data里面定义的数据才会有响应式更新

vue依赖的defineProperty的数据劫持加上依赖数据,实现数据的响应式更新。可以称之为依赖式的响应。因为依赖所以注定了只会更新与data相关的数据。

2)react则是更新在state里面定义的数据

this.setState()方法背后除了事件队列的收集之后的统一修改,生成新的react树,通过diff算法计算出哪里需要修改。

为了避免多余的数据更新,可以使用react生命周期函数当中的shouldComponentUpdate这个方法对输入的props和state做对比,终止多余的数据更新操作。

3)关于vuex

vuex只能用在vue上面。

vuex和redux分别是vue和react的状态管理工具。

vuex和redux都是共享状态,前者在状态更新上,利用了vue自身自带的依赖数据更新方式,通过将vuex的store诸如到根实例的方式,注入到各个组件当中。

4)redux

redux实现了redux的完全解耦,可以用在react上面,也可以用在ng上面。

redux同样借助Provider这个根组件,将store注入到上下文context中,但其实现响应式数据更新的方式,是通过发布订阅模式结合共享数据的方式:也就是通过复制路径数据,新路径数据与原有状态作对比的方式,实现变化的数据更新。这样就实现了数据更新的优化。

问题是上面方法只是进行浅层数据的比较,这就导致如果props是一个引用数据,依然会存在浪费,这个时候就需要保证每次传入的是同一个对象。

而其他组件部分,没有通过connect连接的则仍然需要shouldComponentupdate优化。

相比较而言,vuex明显更为直接。

二,vue-router和react-router

vue路由的思维方式更符合中国人的思维,一个占位符router-view,显示不同内容。且也是注入的方式注入到根实例中。且路由组件明显分离。

react路由在写法上面包含根组件(不算redux的Provider),没有vue的占位符概念,而是多个route共同构成的占位符。

vue的嵌套路由比react更为直观,react的嵌套路由只能分散开。

react没有全局路由守卫的概念。

三,其它

react知识v层,vue是vm层。

真正来说redux更加解耦,vue的全家桶反而仅仅只能给vue用。

vue的核心要比react的更加智能,但vue全家桶则不如react全家桶解耦。

但正因为redux相关库的强解耦,导致使用redux需要更多的组件进行性能优化,比如需要react-redux,需要redux-ignore等。这点来说反倒不如vue便于开发和维护。

vue依据的是.vue文件构建的组件化系统,react依据的是React.Component这个类。

二者都在构建一个这样的系统:通过增加代码就能增加系统的功能,而不是通过对现有代码的修改来增加功能。

不断更新……

2018.11.4

react相对vue更灵活这点是从jsx语法本身来说。vue有着更多的api,而react因为本质依然是js,所以api并不多。

react整体上面是模板方法模式。

Vue于React特性对比(二)的更多相关文章

  1. Vue于React特性对比(三)

    最近重学React,再次和vue做了对比. 一,为官方插件提供便利的第三方插件横行 React仅仅是一个ui框架.虽然官方提供了redux,react-router:但也有第三方的redux-thun ...

  2. Vue于React特性对比(四)

    新开了一个vue的项目,从vue单页面框架搭建到单点登录接入都是自己负责搞的.然后准备将这套东西迁移到react上.然后有了这篇文章. 1,reactjs分环境打包明显要比vue更为麻烦 vue修改的 ...

  3. Vue和React的对比

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

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

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

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

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

  6. vue、React Nactive的区别(转载)

    Vue与React的对比 Vue.js与React.js从某些反面来说很相似,通过两个框架的学习,有时候对一些用法会有一点思考,为加深学习的思索,特翻阅了两个文档,从以下各方面进行了对比,加深了对这两 ...

  7. Vue和React对比

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

  8. vue,angular,react框架对比

    转载自:https://www.cnblogs.com/hubgit/p/6633214.html 首先,我们先了解什么是MVX框架模式? MVX框架模式:MVC+MVP+MVVM 1.MVC:Mod ...

  9. 前端开发 vue,angular,react框架对比1

    转载自:https://www.cnblogs.com/hubgit/p/6633214.html 首先,我们先了解什么是MVX框架模式? MVX框架模式:MVC+MVP+MVVM 1.MVC:Mod ...

随机推荐

  1. 在Eclipse上编写Go项目

     Note for users in China Note: if you are behind the Great Firewall of China, you are very likely to ...

  2. 记账APP(4)

    依旧是一个表格类型的增删改查,但是呢,在用节点做,有点懵,明天加油

  3. angular5学习笔记 路由通信

    首先在路由字典中,接收值的组件中加上:/:id 在发送值的组件中,发送值的方式有几种. 第一种:<a routerLink="/detail/1">新闻详情1</ ...

  4. 20155234 实验三 敏捷开发与XP实践

    20155234 实验三 敏捷开发与XP实践 实验内容 1.XP基础 2.XP核心实践 3.相关工具 实验步骤 (一)敏捷开发与XP 敏捷开发(Agile Development)是一种以人为核心.迭 ...

  5. 20155336 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

    20155336 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Jav ...

  6. 微服务(SOP)日志管理

    问题: 大型企业应用规模大,调试 / 解决问题由于在生产环境中不会有开发环境的调试工具,如果需要模拟还原当时的环境, 目前的解决办法是进行日志记录 日志记录的常用方式: 使用SpringAop进行切入 ...

  7. 9.14 DP合集水表

    9.14 DP合集水表 关键子工程 在大型工程的施工前,我们把整个工程划分为若干个子工程,并把这些子工程编号为 1. 2. --. N:这样划分之后,子工程之间就会有一些依赖关系,即一些子工程必须在某 ...

  8. 解决老项目中 Timer运行一段时间后失效的问题

    那是因为Timer中的代码出现了异常未被捕获,所以线程被挂起 只需要加入  try catch即可 推荐使用 Quartz 2018-08-08 03:50:44 [ Timer-1:39366015 ...

  9. javaweb(三十三)——使用JDBC对数据库进行CRUD

    一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可. Statement对象的exe ...

  10. Swoole实现h5版聊天室笔记

    声明:该聊天室目前只有一对多,一对一的聊天功能,另外,因为没有使用到mysql,所以还存在比较多的缺陷地方,但知道原理就差不多了,这里主要分享下swoole简易的聊天室制作思路. 开发环境:cento ...