zoukankan      html  css  js  c++  java
  • Vue于React特性对比(二)

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

    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整体上面是模板方法模式。

    对比三跳转:

    https://www.cnblogs.com/zhensg123/p/11418853.html

  • 相关阅读:
    iOS APM性能统计
    iOS promise
    静态代码检测工具Infer的部署
    ES读写数据的工作原理
    关于 Elasticsearch 内存占用及分配
    Elasticsearch中数据是如何存储的
    ES中的选举机制
    .net core 3.1 webapi解决跨域问题 GET DELETE POST PUT等
    .net framework WEBAPI跨域问题
    Angular前端项目发布到IIS
  • 原文地址:https://www.cnblogs.com/zhensg123/p/9460390.html
Copyright © 2011-2022 走看看