一、Vuex 是什么?

官方的描述
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

本人的理解
所谓的状态管理模式 + 库,实际上就可以理解为是一个组件间共享数据的解决方案

二、为什么需要 Vuex ?

对于这个问题,我们可以思考一下,组件通信的场景,比如:

父子组件之间共享数据
兄弟组件之间共享数据
祖孙组件之间共享数据
多种组件之间共享数据

以上的这几种组件间通信的场景,我们通过 props 、$attrs$listenersprovide/inject、$emit、EventBus(事件总线)、$root$parent 都是可以解决的

不过我们要考虑依一下实际的开发场景,如果我们所做的是个小型简单的应用,确实以上的解决方案完全够用,但如果是对于中大型项目,因为业务较为复杂、多个组件同时共享使用一个动态数据的场景比较多,那么此时再使用以上的方式,就会显得非常的繁琐麻烦,更不利于项目代码的读写和维护,这个时候,我们就必须要使用 Vuex 来解决这种场景下所带来的困扰。