Vuex是一个专为Vue开发的应用程序的状态管理模式,它采用集中式存储管理应用的所有组件的状态,
并以相应的规则保证状态以一种可预测的方式发生变化。
Vuex采用类似全局对象的形式来管理所有组件的公用数据,如果你想想修改这个全局对象的数据?
是可以的,但没那么简单,你得按照Vuex提供的方式来修改,不能自己随意用自己的方式来修改。
为什么说只是类似全局对象呢?
说的是类似,就代表它跟我们之前使用的定义全局对象变量还不完全一样。主要有一下两点不同:
1.Vuex的状态存储是响应式的,什么意思呢?就是当你的组件使用到了这个Vuex的状态,
一旦它改变了,所有关联的组件都会自动更新相对应的数据,这样开发者省事很多。
2.你不能直接修改Vuex的状态,如果是个全局对象变量,要修改很容易,
但是在Vuex中不能这样做,想修改就得使用Vuex提供的唯一途径:
显示地提交(commint)mutations来实现修改(没了解过这里没关系,下一节前端君会有介绍)。
这样做的好处就是方便我们跟踪每一个状态的变化,在开发过程中调试的时候,非常实用。
以上两点是Vuex状态管理跟使用传统全局变量的不同之处,
也是Vuex的优势所在。那是不是所有使用vue开发的SPA(single page application)单页应用都适合采用Vuex呢?
适用场景
当然也不是,如果你的应用是个小型的应用,组件不多,组件之间的状态依赖不多,关系清晰容易维护,
也就是说不同组件之间很少有数据之间的关联的话,那么你大可不用Vuex来开发。
反之,如果你开发的是较大型的应用,出现多个视图组件共同依赖一个状态,
这个状态相当于我们的全局对象数据,其他组件的改动,会影响到它,反之,它的修改也需要更新其他关联的组件,
那么Vuex就很适用。比如:商城系统,外卖系统等等。