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动态合并单元格并添加小计合计功能示例
Nov 26 Vue.js
vue使用echarts图表自适应的几种解决方案
Dec 04 Vue.js
vue3.0实现插件封装
Dec 14 Vue.js
vue实现购物车的小练习
Dec 21 Vue.js
vue集成一个支持图片缩放拖拽的富文本编辑器
Jan 29 Vue.js
如何管理Vue中的缓存页面
Feb 06 Vue.js
详解Vue的七种传值方式
Feb 08 Vue.js
vue实现同时设置多个倒计时
May 20 Vue.js
vue项目多环境配置(.env)的实现
Jul 21 Vue.js
Vue提供的三种调试方式你知道吗
Jan 18 Vue.js
Vue Mint UI mt-swipe的使用方式
Jun 05 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 广告点击统计代码(php+mysql)
2018/02/21 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
解决FLASH需要点击激活的代码
2006/12/20 Javascript
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
2012/02/03 Javascript
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
Extjs 3.3切换tab隐藏相应工具栏出现空白解决
2013/04/02 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
JavaScript图片轮播代码分享
2015/07/31 Javascript
Jquery 分页插件之Jquery Pagination
2015/08/25 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
jQuery获得字体颜色16位码的方法
2016/02/20 Javascript
浅谈javascript中的Function和Arguments
2016/08/30 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
Vue2.0中集成UEditor富文本编辑器的方法
2018/03/03 Javascript
Vue列表渲染的示例代码
2018/11/01 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
小程序点击图片实现png转jpg
2019/10/22 Javascript
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
[02:01]大师之路——DOTA2完美大师赛11月论剑上海
2017/11/06 DOTA
[00:10]DOTA2全国高校联赛 以DOTA2会友
2018/05/30 DOTA
详解在Python程序中使用Cookie的教程
2015/04/30 Python
Python中列表、字典、元组数据结构的简单学习笔记
2016/03/20 Python
pycharm配置git(图文教程)
2019/08/16 Python
python让函数不返回结果的方法
2020/06/22 Python
Bandier官网:奢侈、时尚前卫的健身服装首选目的地
2020/07/05 全球购物
法雷奥SQA(electric)面试问题
2016/01/23 面试题
体育教育毕业生自荐信
2013/11/21 职场文书
物流管理专业应届生求职信
2013/11/21 职场文书
眼镜促销方案
2014/03/15 职场文书
公司联欢晚会主持词
2014/03/22 职场文书
热门专业求职信
2014/05/24 职场文书
要账委托书范本
2014/09/15 职场文书
2014旅游局领导班子四风问题对照检查材料思想汇报
2014/09/19 职场文书
北京英语导游词
2015/02/12 职场文书
毕业生对母校寄语
2015/02/26 职场文书
python和C/C++混合编程之使用ctypes调用 C/C++的dll
2022/04/29 Python