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中通过render函数给子组件设置ref操作
Nov 17 Vue.js
Vue组件简易模拟实现购物车
Dec 21 Vue.js
Vue中强制组件重新渲染的正确方法
Jan 03 Vue.js
Vuex实现简单购物车
Jan 10 Vue.js
如何在vue中使用HTML 5 拖放API
Jan 14 Vue.js
Vue实现简单计算器
Jan 20 Vue.js
vue中data改变后让视图同步更新的方法
Mar 29 Vue.js
详解Vue中$props、$attrs和$listeners的使用方法
Feb 18 Vue.js
Vue的生命周期一起来看看
Feb 24 Vue.js
vue动态绑定style样式
Apr 20 Vue.js
Vue ECharts实现机舱座位选择展示功能
May 15 Vue.js
vue router 动态路由清除方式
May 25 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
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
php array_udiff_assoc 计算两个数组的差集实例
2016/11/12 PHP
PHP单例模式简单用法示例
2017/06/23 PHP
PHP设计模式之单例模式定义与用法分析
2019/03/26 PHP
求得div 下 img的src地址的js代码
2007/02/28 Javascript
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
js给onclick赋值传参数的两种方法
2013/11/25 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
2016/12/16 Javascript
微信小程序商品到详情的实现
2017/06/27 Javascript
jQuery实现的鼠标滚轮控制图片缩放功能实例
2017/10/14 jQuery
jquery实现楼层滚动效果
2018/01/01 jQuery
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
jquery拖拽自动排序插件使用方法详解
2020/07/20 jQuery
微信小程序wxs实现吸顶效果
2020/01/08 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
Python中使用双下划线防止类属性被覆盖问题
2019/06/27 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
python的pyecharts绘制各种图表详细(附代码)
2019/11/11 Python
matplotlib.pyplot画图并导出保存的实例
2019/12/07 Python
python中pow函数用法及功能说明
2020/12/04 Python
合同专员岗位职责
2013/12/18 职场文书
大学学风建设方案
2014/05/04 职场文书
活动总结新闻稿
2014/08/30 职场文书
小学教师师德整改措施
2014/09/29 职场文书
2015年度党员个人总结
2015/02/14 职场文书
2015年新农合工作总结
2015/03/30 职场文书
2015年酒店年度工作总结
2015/05/23 职场文书
集结号观后感
2015/06/08 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书