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下载后台传过来的乱码流的问题
Dec 05 Vue.js
Vue如何实现验证码输入交互
Dec 07 Vue.js
vue中封装axios并实现api接口的统一管理
Dec 25 Vue.js
Vue看了就会的8个小技巧
Jan 21 Vue.js
Vue ​v-model相关知识总结
Jan 28 Vue.js
vue-cli中实现响应式布局的方法
Mar 02 Vue.js
vue2实现provide inject传递响应式
May 21 Vue.js
Vue过滤器(filter)实现及应用场景详解
Jun 15 Vue.js
vue实现拖拽交换位置
Apr 07 Vue.js
vue 实现弹窗关闭后刷新效果
Apr 08 Vue.js
vue3语法糖内的defineProps及defineEmits
Apr 14 Vue.js
VUE递归树形实现多级列表
Jul 15 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面向对象全攻略 (五) 封装性
2009/09/30 PHP
PHP反射使用实例和PHP反射API的中文说明
2014/07/02 PHP
javascript编程起步(第六课)
2007/02/27 Javascript
非阻塞动态加载javascript广告实现代码
2010/11/17 Javascript
JS操作HTML自定义属性的方法
2015/02/10 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
2016/04/13 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
Javascript发送AJAX请求实例代码
2016/08/21 Javascript
AngularJS bootstrap启动详解及实例代码
2016/09/14 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
2018/09/27 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
微信小程序HTTP接口请求封装的实现
2019/02/21 Javascript
layui自定义ajax左侧三级菜单
2019/07/26 Javascript
解决ant design vue中树形控件defaultExpandAll设置无效的问题
2020/10/26 Javascript
[02:37]2018DOTA2亚洲邀请赛赛前采访 VP.no[o]ne心中最强SOLO是谁
2018/04/04 DOTA
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
Python使用wxPython实现计算器
2018/01/30 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
2019/06/21 Python
用Python画一个LinkinPark的logo代码实例
2019/09/10 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
2020/03/05 Python
Pyinstaller加密打包应用的示例代码
2020/06/11 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
台湾母婴用品购物网站:Infant婴之房
2018/06/15 全球购物
历史学专业个人的自我评价
2013/10/13 职场文书
机电一体化职业规划书
2014/01/07 职场文书
中介业务员岗位职责
2014/04/09 职场文书
不忘国耻振兴中华演讲稿
2014/05/14 职场文书
生死牛玉儒观后感
2015/06/11 职场文书
欠款证明
2015/06/24 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书
解析Redis Cluster原理
2021/06/21 Redis
使用CSS实现音波加载效果
2023/05/07 HTML / CSS