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的mixin策略
Nov 19 Vue.js
Vue组件生命周期运行原理解析
Nov 25 Vue.js
vue动态合并单元格并添加小计合计功能示例
Nov 26 Vue.js
vue中如何添加百度统计代码
Dec 19 Vue.js
Vue实现随机验证码功能
Dec 29 Vue.js
vue 计算属性和侦听器的使用小结
Jan 25 Vue.js
如何使用vue3打造一个物料库
May 08 Vue.js
vue响应式原理与双向数据的深入解析
Jun 04 Vue.js
vue3中provide && inject的使用
Jul 01 Vue.js
Vue实现跑马灯样式文字横向滚动
Nov 23 Vue.js
关于Vue中的options选项
Mar 22 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
php实现excel中rank函数功能的方法
2015/01/20 PHP
Java和PHP在Web开发方面对比分析
2015/03/01 PHP
PHP+MySQL之Insert Into数据插入用法分析
2015/09/27 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
php字符串的替换,分割和连接方法
2016/05/23 PHP
php输出文字乱码的解决方法
2019/10/04 PHP
关于PHP5.6+版本“No input file specified”问题的解决
2019/12/11 PHP
javascript下function声明一些小结
2007/12/28 Javascript
js数组操作学习总结
2013/11/04 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
JavaScript动态修改背景颜色的方法
2015/04/16 Javascript
js生成验证码并直接在前端判断
2015/05/15 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
2016/10/27 Javascript
jQuery插件扩展操作入门示例
2017/01/16 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
Angular4 中内置指令的基本用法
2017/07/31 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
2018/08/31 Javascript
在Vue组件中获取全局的点击事件方法
2018/09/06 Javascript
JS如何在数组指定位置插入元素
2020/03/10 Javascript
js实现随机抽奖
2020/03/19 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
2020/09/10 Javascript
[36:29]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs TNC
2018/04/02 DOTA
[11:12]2018DOTA2国际邀请赛寻真——绿色长城OpTic
2018/08/10 DOTA
python检测某个变量是否有定义的方法
2015/05/20 Python
Python中json格式数据的编码与解码方法详解
2016/07/01 Python
python 用正则表达式筛选文本信息的实例
2018/06/05 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
旧时光糖果:Old Time Candy
2018/02/05 全球购物
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
电信专业应届生自荐信
2013/09/28 职场文书
《跨越海峡的生命桥》教学反思
2014/02/24 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
学校法制宣传日活动总结
2014/11/01 职场文书
海上钢琴师观后感
2015/06/03 职场文书
mysql的数据压缩性能对比详情
2021/11/07 MySQL