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 打包的静态文件不能直接运行的原因及解决办法
Nov 19 Vue.js
vue element实现表格合并行数据
Nov 30 Vue.js
vue 通过base64实现图片下载功能
Dec 19 Vue.js
Vue实现随机验证码功能
Dec 29 Vue.js
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
Jan 05 Vue.js
Vue中使用wangeditor富文本编辑的问题
Feb 07 Vue.js
Vue实现动态查询规则生成组件
May 27 Vue.js
Vue vee-validate插件的简单使用
Jun 22 Vue.js
详解Vue router路由
Nov 20 Vue.js
关于Vue中的options选项
Mar 22 Vue.js
vue配置型表格基于el-table拓展之table-plus组件
Apr 12 Vue.js
vue封装数字翻牌器
Apr 20 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中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
2011/11/10 PHP
php通过字符串调用函数示例
2014/03/02 PHP
thinkphp中空模板与空模块的用法实例
2014/11/26 PHP
Laravel 5 学习笔记
2015/03/06 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
2017/06/06 PHP
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
点击弹出层外区域关闭弹出层jquery特效示例
2013/08/25 Javascript
easyui datagrid 键盘上下控制选中行示例
2014/03/31 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
简介JavaScript中search()方法的使用
2015/06/06 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
js实现简单的验证码
2015/12/25 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
你可能不知道的CORS跨域资源共享
2019/03/13 Javascript
vue项目部署到nginx/tomcat服务器的实现
2019/08/26 Javascript
uni-app 支持多端第三方地图定位的方法
2020/01/03 Javascript
json.stringify()与json.parse()的区别以及用处
2021/01/25 Javascript
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
Python中为feedparser设置超时时间避免堵塞
2014/09/28 Python
在Django的session中使用User对象的方法
2015/07/23 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
2017/09/26 Python
python实现NB-IoT模块远程控制
2018/06/20 Python
详解js文件通过python访问数据库方法
2019/03/03 Python
Python自定义函数计算给定日期是该年第几天的方法示例
2019/05/30 Python
Python学习笔记之文件的读写操作实例分析
2019/08/07 Python
python连接mongodb集群方法详解
2020/02/13 Python
html5 实现客户端验证上传文件的大小(简单实例)
2016/05/15 HTML / CSS
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
幼儿园大班教师个人工作总结
2015/02/05 职场文书
毕业晚宴祝酒词
2015/08/11 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书
九年级历史教学反思
2016/02/19 职场文书
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL