vuex Module将 store 分割成模块的操作


Posted in Vue.js onDecember 07, 2020

由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。

为了解决以上问题,Vuex 允许我们将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割:

const moduleA = {
 state: () => ({ ... }),
 mutations: { ... },
 actions: { ... },
 getters: { ... }
}
 
const moduleB = {
 state: () => ({ ... }),
 mutations: { ... },
 actions: { ... }
}
 
const store = new Vuex.Store({
 modules: {
 a: moduleA,
 b: moduleB
 }
})
 
store.state.a // -> moduleA 的状态
store.state.b // -> moduleB 的状态

补充知识:vuex实现模块化分割,在不同类别的文件中放置对应的数据及操作

目录结构为

store文件夹下有index.js 、modules文件夹,在modules文件夹下是你的模块,最好通过功能命名

一级目录:store

一级目录下文件:index.js

二级目录:modules

三级目录demo

三级目录下文件demo.js

三级目录下文件getter.js

三级目录下文件mutations.js

三级目录下文件 state,js

各文件的内容为

一级目录下index.js

import Vue from 'vue'
import Vuex from 'vuex'
import demo from './modules/demo/demo.js';
Vue.use(Vuex);
const $store = new Vuex.Store({
modules: {


demo

}
});
export default $store;

三级目录下demo.js

import state from './state.js';
import mutations from './mutations.js';
// 按需要导入
// import getters from './getters.js';
// import actions from './actions.js';

export default{
// 将导入的文件暴露出去
 state,
 mutations
}

三级目录其他文件

export default{}

最后在main.js中挂载

import Vue from 'vue'
import App from './App'
import router from './router'
import { RouterMount } from 'uni-simple-router'
//引入vuex
import store from './store'
//把vuex定义成全局组件
Vue.prototype.$store = store

Vue.config.productionTip = false

App.mpType = 'app'

const app = new Vue({
 store,
  ...App
})
app.$mount();

以上这篇vuex Module将 store 分割成模块就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
解决vue elementUI 使用el-select 时 change事件的触发问题
Nov 17 Vue.js
Vue在H5 项目中使用融云进行实时个人单聊通讯
Dec 14 Vue.js
vue 导航守卫和axios拦截器有哪些区别
Dec 19 Vue.js
vue实现简易的双向数据绑定
Dec 29 Vue.js
vue.js watch经常失效的场景与解决方案
Jan 07 Vue.js
Vue过滤器,生命周期函数和vue-resource简单介绍
Jan 12 Vue.js
Vue仿Bibibili首页的问题
Jan 21 Vue.js
vue.js实现点击图标放大离开时缩小的代码
Jan 27 Vue.js
vue实现列表拖拽排序的示例代码
Apr 08 Vue.js
vue的项目如何打包上线
Apr 13 Vue.js
vue 把二维或多维数组转一维数组
Apr 24 Vue.js
Vue Element plus使用方法梳理
Dec 24 Vue.js
浅谈Vue使用Elementui修改默认的最快方法
Dec 05 #Vue.js
vue+element_ui上传文件,并传递额外参数操作
Dec 05 #Vue.js
解决vue下载后台传过来的乱码流的问题
Dec 05 #Vue.js
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
Dec 04 #Vue.js
vue基于Echarts的拖拽数据可视化功能实现
Dec 04 #Vue.js
vue使用echarts图表自适应的几种解决方案
Dec 04 #Vue.js
vue-calendar-component 封装多日期选择组件的实例代码
Dec 04 #Vue.js
You might like
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
基于mysql的论坛(2)
2006/10/09 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
2018/07/17 PHP
文本框根据输入内容自适应高度的代码
2011/10/24 Javascript
10个基于浏览器的JavaScript调试工具分享
2013/02/07 Javascript
引用外部js乱码问题分析及解决方案
2013/04/12 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
js实现星星打分效果的方法
2020/07/05 Javascript
js实现表单检测及表单提示的方法
2015/08/14 Javascript
js漂浮广告实现代码
2015/08/15 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
2017/12/08 Javascript
微信小程序登录session的使用
2019/03/17 Javascript
React优化子组件render的使用
2019/05/12 Javascript
jQuery模拟html下拉多选框的原生实现方法示例
2019/05/30 jQuery
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
微信小程序实现上传多个文件 超过10个
2020/03/30 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
2020/05/28 Javascript
在Vue中创建可重用的 Transition的方法
2020/06/02 Javascript
Python通过future处理并发问题
2017/10/17 Python
python实现kMeans算法
2017/12/21 Python
Python实现统计给定列表中指定数字出现次数的方法
2018/04/11 Python
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
详解python3中zipfile模块用法
2018/06/18 Python
python读取word文档,插入mysql数据库的示例代码
2018/11/07 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
Oracle中delete,truncate和drop的区别
2016/05/05 面试题
学习十八大精神心得体会
2013/12/31 职场文书
甜点店创业计划书
2014/01/27 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
奥巴马经典演讲稿
2014/09/13 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
公安纪律作风整顿心得体会
2016/01/23 职场文书
python 下划线的多种应用场景总结
2021/05/12 Python
vue组件vue-esign实现电子签名
2022/04/21 Vue.js