一、vuex是什么?
vuex是一种专门为vue框架开发的状态管理模式,它采用集中存储的方式,便于在任何时候任何组件中得到相应的状态快照。
二、vuex用来解决什么问题的?
1、多个视图依赖同一状态。
2、来自不同的组件需要改变同一状态。
三、vuex的核心概念?
核心用法包括:State、Getter、Mutation、Action、Module。
四、vuex相对普通对象有什么优势?
1、不能直接改变store中的状态,改变store中的状态只能通过提交commit方法。
2、vuex中的状态是响应式的。
五、vuex中的Module是为了解决什么问题的?
为了解决所有状态集中在一个大的对象中使得应用变的复 杂时,vuex允许我们将store分割成模块(module),每个模块内有自己的state、mutation、getter。
六、如果让你实现一个简单的状态管理,要如何实现?
首先创建一个PubSub发布订阅者模式,PubSub模式遍历所有订阅,并触发其回调,同时传入相关的载荷。 其次实现核心模块Store对象,这个对象主要包括state对象、commit方法、dispatch方法。在这个应用和Store对象的核心之间,将有一个基于代理的系统,它使得我们的PubSub模块监视和广播状态变化。 在store对象中需要先初始化
let self = this;
self.actions = {};
self.mutations = {};
self.state = {};
self.status = 'resting';
之后我们将创建一个新的PubSub实例,它将作为store的events属性的值:
self.events = new PubSub();
接下来我们需要看传入的Store对象中是否有action、mutation。当实例化Store对象时,我们可以传入一个数据对象。它包括mutation和action的集合,它们控制我们的store数据流。
这就是我们的默认的设置和用到的参数。让我们看一下Store对象如何跟踪所有的变化。我们将使用Proxy来完成此操作。Proxy所做的工作主要是代理state对象。我们可以通过get方法和set方法拦截数据。在set方法中我们可以利用PubSub模块发布一个stateChange事件。任何订阅了该事件的回调将被调用。
最后是dispatch方法和commit方法的实现。