Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

第 24 题:聊聊 Redux 和 Vuex 的设计思想 #45

Open
whu-luojian opened this issue Mar 12, 2019 · 16 comments
Open

第 24 题:聊聊 Redux 和 Vuex 的设计思想 #45

whu-luojian opened this issue Mar 12, 2019 · 16 comments

Comments

@whu-luojian
Copy link

知乎上看到的一篇文章:Vuex、Flux、Redux、Redux-saga、Dva、MobX(https://zhuanlan.zhihu.com/p/53599723)

@giscafer
Copy link

giscafer commented Mar 12, 2019

link for reference:

@blockmood
Copy link
Contributor

blockmood commented Mar 15, 2019

知乎上看到的一篇文章:Vuex、Flux、Redux、Redux-saga、Dva、MobX(https://zhuanlan.zhihu.com/p/53599723)

新的连接: https://zhuanlan.zhihu.com/p/53599723

@lvzhiyi
Copy link

lvzhiyi commented Aug 14, 2019

题目是讨论两者的设计思想,我从共同点和区别方面大致说一下:

共同点

首先两者都是处理全局状态的工具库,大致实现思想都是:全局state保存状态---->dispatch(action)
------>reducer(vuex里的mutation)----> 生成newState; 整个状态为同步操作;

区别

最大的区别在于处理异步的不同,vuex里面多了一步commit操作,在action之后commit(mutation)之前处理异步,而redux里面则是通过中间件处理

@GrootWanggg
Copy link

我觉得区别不大,用法上vuex更简便而已。

@daiyunchao
Copy link

适合多人,角色转变,state改变有据可依

@a82448186
Copy link

a82448186 commented Nov 7, 2019

共同点:都是为响应式编程提供的一个的可预测的状态容器。方便在复杂的应用中进行兄弟组件或者子组件里修改状态。
不同点:状态改变时 redux 通过纯函数(reduce)生成新的 state, 而vux是直接修改状态属性,最后出发相应的跟新操作

@yygmind yygmind added the Vue label Dec 16, 2019
@yygmind yygmind added the React label Jan 2, 2020
@xxy1101
Copy link

xxy1101 commented Jan 9, 2020

where is dalao?

@deep-fish-pixel
Copy link

  • 最大的特点都采用响应式编程,在web端表现为根父子组件关系的语义化标签,完美统一了数据流、事件绑定、子模块使用方式,与html标签使用方式保持了非常好的一致性,极大提升复杂代码的可读性,总之这是一个非常有颠覆性的方式。
  • 组件view主要依赖state状态的变更,极大约束了数据变更的来源,开发起来定位错误的范围更小。
  • 都提供了生命周期概念,都有创建、加载、更新、卸载等阶段,在以上相关钩子函数中开发会更容易。
  • 框架的内部都使用虚拟dom的实现,减少底层的操作次数,在性能上也不错。
  • 因为有虚拟dom的实现,同构功能的实现也水到渠成,所以页面首次渲染也更快。

@shenxuxiang
Copy link

负责数据状态管理,类似单一数据源的概念。所有的数据都是通过 redux/vuex 下发给各个组建,组建内部无法直接修改数据,只能通过 redux/vuex 提供的方法去修改。
自己实现了一个 redux.js 。基本阐述了 redux 的流程和 API 的实现方法,比较简单。https://juejin.im/post/5e20274b6fb9a02ff32009af

@AkiDroid
Copy link

  • 最大的特点都采用响应式编程,在web端表现为根父子组件关系的语义化标签,完美统一了数据流、事件绑定、子模块使用方式,与html标签使用方式保持了非常好的一致性,极大提升复杂代码的可读性,总之这是一个非常有颠覆性的方式。
  • 组件view主要依赖state状态的变更,极大约束了数据变更的来源,开发起来定位错误的范围更小。
  • 都提供了生命周期概念,都有创建、加载、更新、卸载等阶段,在以上相关钩子函数中开发会更容易。
  • 框架的内部都使用虚拟dom的实现,减少底层的操作次数,在性能上也不错。
  • 因为有虚拟dom的实现,同构功能的实现也水到渠成,所以页面首次渲染也更快。

这是react和vue的区别,不是redux和vuex的区别

@cutie6
Copy link

cutie6 commented May 28, 2020

把组件的共享状态抽取出来,以一个全局单例模式管理。在这种模式下,我们的组件树构成了一个巨大的“视图”,不管在树的哪个位置,任何组件都能获取状态或者触发行为!

通过定义和隔离状态管理中的各种概念并通过强制规则维持视图和状态间的独立性,我们的代码将会变得更结构化且易维护。

参考: vuex 官方文档,https://vuex.vuejs.org/zh/

@CodingMeUp
Copy link

CodingMeUp commented Jun 22, 2020

知乎上看到的一篇文章:Vuex、Flux、Redux、Redux-saga、Dva、MobX(https://zhuanlan.zhihu.com/p/53599723)

你链接多带了个 ”)“, 点这访问

@blank1u
Copy link

blank1u commented Nov 5, 2020

flux

@ZacBin9
Copy link

ZacBin9 commented Feb 28, 2021

Immutable vs. Mutable

@mingrutough1
Copy link

都是状态管理工具。但都不是非用不可。“如果你不知道是否需要XXX,那就是不需要它”。状态管理工具适用的场景从组件角度看,有如下场景。

  • 多个组件依赖于同一状态。

  • 来自不同组件的行为需要变更同一状态。

上述场景如若不使用状态管理工具,不按照一定规律处理状态的读写,代码很快就会难以维护。你需要一种机制,可以在同一个地方查询状态、改变状态、传播状态的变化。

redux

设计思想:

vuex:

vuex是以个专为vue.js开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态已一种可预测的方式发生变化。
对于复杂的应用,vuex把组件的共享状态抽取出来,以一个全局单例模式管理。在这种模式下,组件树构成了一个巨大的视图,不管在树的哪个位置,任何组件都能够轻松读写状态。且通过定义和隔离状态管理中的各种概念并通过强制规则维持视图和状态间的独立性,我们的代码将会变得更结构化且易维护。这就是vuex背后的基本思想,借鉴了flux、redux等。于其他模式不同的是,vuex是专门为vue.js设计的状态管理库,以利用vue.js的细粒度数据响应机制来进行高效的状态更新。

@yyISACoder
Copy link

题目是讨论两者的设计思想,我从共同点和区别方面大致说一下:

共同点

首先两者都是处理全局状态的工具库,大致实现思想都是:全局state保存状态---->dispatch(action) ------>reducer(vuex里的mutation)----> 生成newState; 整个状态为同步操作;

区别

最大的区别在于处理异步的不同,vuex里面多了一步commit操作,在action之后commit(mutation)之前处理异步,而redux里面则是通过中间件处理

最大区别应该是redux是遵循immutable的方式进行state的更改,而vuex是以mutable的方式去更改state

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests