Vuex
1. Vuex 概述
1.1 Vuex 简介
1.1.1 Vuex 的概念
- Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。
- Vuex 提供了一种机制,让开发者可以集中式管理应用中的所有组件的状态。
- 通过 Vuex,开发者可以实现状态的持久化、缓存、共享等功能。
1.1.2 Vuex 的优势
- Vuex 提供了更好的状态管理,使得数据在组件之间的传递更加清晰。
- Vuex 支持热重载,可以实现状态的实时更新,提高开发效率。
- Vuex 有助于大型应用的开发,因为它的模块化和可扩展性。
1.2 Vuex 的核心概念
1.2.1 State
- State 是 Vuex 的核心概念之一,用于存储和管理应用的状态。
- State 可以被看作是一个对象,包含了应用的所有数据。
- 组件可以通过
mapState函数将 state 中的数据映射到自己的数据中。
1.2.2 Getters
- Getters 是 Vuex 的另一个核心概念,用于对 state 中的数据进行计算和处理。
- Getters 可以看作是 state 的计算属性,可以对 state 中的数据进行过滤、排序等操作。
- 组件可以通过
mapGetters函数将 getters 中的数据映射到自己的计算属性中。
1.2.3 Mutations
- Mutations 是 Vuex 的第三个核心概念,用于修改 state 中的数据。
- Mutations 必须同步执行,不能包含异步操作。
- 组件可以通过
mapMutations函数将 mutations 中的方法映射到自己的 methods 中。
1.2.4 Actions
- Actions 是 Vuex 的第四个核心概念,用于在组件中执行异步操作。
- Actions 可以看作是 mutations 的封装,可以在 actions 中执行异步操作,然后再提交 mutations。
- 组件可以通过
mapActions函数将 actions 中的方法映射到自己的 methods 中。
1.3 Vuex 的应用场景
1.3.1 大型应用
- 在大型应用中,组件之间共享数据的需求非常强烈。
- Vuex 可以提供一种集中式的状态管理,使得数据在组件之间的传递更加清晰。
- Vuex 可以实现状态的持久化、缓存、共享等功能,提高应用的性能和稳定性。
1.3.2 数据复杂应用
- 在数据复杂应用中,数据的状态管理非常重要。
- Vuex 可以提供一种模块化的状态管理,使得每个模块的状态管理更加清晰。
- Vuex 可以实现数据的过滤、排序、缓存等功能,提高应用的效率和可维护性。
2. Vuex 的安装与配置
2.1 安装 Vuex
2.1.1 使用 npm 安装
- 在项目的根目录下,运行
npm install vuex命令。 - 安装完成后,可以在项目中找到
vuex文件夹,其中包含了 Vuex 的核心文件。
2.1.2 使用 yarn 安装
- 在项目的根目录下,运行
yarn add vuex命令。 - 安装完成后,可以在项目中找到
vuex文件夹,其中包含了 Vuex 的核心文件。
2.2 配置 Vuex
2.2.1 创建 Vuex 文件夹
- 在项目的根目录下,创建一个名为
store的文件夹。 - 在
store文件夹中,创建一个名为index.js的文件,用于配置 Vuex 的 store。
2.2.2 引入 Vue 和 Vuex
- 在
index.js文件中,引入 Vue 和 Vuex。 - 使用
Vue.use(Vuex)方法将 Vuex 添加到 Vue 实例中。
2.2.3 创建 state、getters、mutations、actions
- 在
index.js文件中,创建 state、getters、mutations、actions。 - 使用
new Vuex.Store({})方法创建 store,并将 state、getters、mutations、actions 作为参数传递给 store。
3. Vuex 的使用
3.1 在组件中使用 Vuex
3.1.1 安装插件
- 在项目中,安装
vuex插件。 - 在组件中,使用
mapState、mapGetters、mapMutations、mapActions函数将 Vuex 的数据和方法映射到组件中。
3.1.2 使用数据和方法
- 在组件的
computed属性中,使用mapState函数获取 state 中的数据。 - 在组件的
methods属性中,使用mapMutations函数提交 mutations,使用mapActions函数执行 actions。
3.2 在项目中使用 Vuex
3.2.1 创建 store
- 在项目的根目录下,创建一个名为
store的文件夹。 - 在
store文件夹中,创建一个名为index.js的文件,用于配置 Vuex 的 store。 - 在
index.js文件中,创建 state、getters、mutations、actions,并创建 store。
3.2.2 引入 store
- 在项目的入口文件(如
main.js)中,引入 store。 - 在创建 Vue 实例时,将 store 作为参数传递给 Vue 实例。
- 在组件中,使用
mapState、mapGetters、mapMutations、mapActions函数将 Vuex 的数据和方法映射到组件中。
4. Vuex 的进阶使用
4.1 模块化
4.1.1 创建模块
- 在
store文件夹中,创建一个名为modules的文件夹。 - 在
modules文件夹中,创建一个名为index.js的文件,用于配置模块化的 store。 - 在
index.js文件中,创建模块,并使用export关键字导出模块。
4.1.2 引入模块
- 在
store/index.js文件中,引入模块。 - 在创建 store 时,使用
modules作为参数传递给 store。
4.1.3 使用模块
- 在组件中,使用
mapState、mapGetters、mapMutations、mapActions函数将模块中的数据和方法映射到组件中。
4.2 持久化
4.2.1 安装插件
- 在项目中,安装
vuex-persistedstate插件。 - 在
store/index.js文件中,引入插件,并使用plugins参数传递给 store。
4.2.2 配置插件
- 在
store/index.js文件中,配置插件的参数,如key、path等。 - 插件将自动将 store 中的数据保存到本地存储中,并在应用启动时自动读取数据。
4.3 缓存
4.3.1 安装插件
- 在项目中,安装
vuex-persistedstate插件。 - 在
store/index.js文件中,引入插件,并使用plugins参数传递给 store。
4.3.2 配置插件
- 在
store/index.js文件中,配置插件的参数,如key、path等。 - 插件将自动将 store 中的数据保存到本地存储中,并在应用启动时自动读取数据。
4.4 共享
4.4.1 创建 store
- 在项目的根目录下,创建一个名为
store的文件夹。 - 在
store文件夹中,创建一个名为index.js的文件,用于配置 Vuex 的 store。 - 在
index.js文件中,创建 state、getters、mutations、actions,并创建 store。
4.4.2 引入 store
- 在项目的入口文件(如
main.js)中,引入 store。 - 在创建 Vue 实例时,将 store 作为参数传递给 Vue 实例。
- 在组件中,使用
mapState、mapGetters、mapMutations、mapActions函数将 Vuex 的数据和方法映射到组件中。




