/**
* Vuex.js
* Vuex 是一个专门为 Vue.js 应用所设计的集中式状态管理架构
* 组件本地状态
* 应用层级状态 : 任何牵扯到一个以上组件的逻辑 都应该写在这里
* Vuex 应用的核心就是 store(仓库)
state : 状态
mutations : 状态变更事件
* Vuex的状态存储是响应式的 当Vue组件从store中读取状态的时候 若store中的状态发生变化
那么相应的组件也会相应地得到高效更新
* 不要直接改变store中的状态 改变store 中的状态的唯一途径就是显式地提交(commit) mutations
* mutation 必须是同步函数
store.commit(事件) 状态变更都应该在此刻完成
* Actions
Action 提交的是 mutation 而不是直接变更状态
Action 可以包含任意异步操作
* 项目结构 : Vuex 并不限制你的代码结构 但是 它规定了一些需要遵守的规则
* 应用层级的状态应该集中到单个 store 对象中
* 提交 mutation 是更改状态的唯一方法 并且这个过程是同步的
* 异步逻辑都应该封装到 action 里面
* 如果 store 文件太大 可以将actioin mutation getters分隔到单独的文件
或者拆分 modules
store
├── index.js # 我们组装模块并导出 store 的地方
├── actions.js # 根级别的 action
├── mutations.js # 根级别的 mutation
└── modules
├── cart.js # 模块 1
└── products.js # 模块 2
* strict : true 开启严格模式 无论何时发生了状态变更且不是由 mutation 函数引起的 将会抛出错
*/