vuex 模块化封装

Vuex模块化

store文件下夹的index.js

import Vue from 'vue'
import Vuex from 'vuex'
import modules from './modules'

Vue.use(Vuex)

const store = new Vuex.Store({
  strict: process.env.NODE_ENV === 'development',
  modules: modules,
})

export default store


store文件下modules文件夹下的index.js

const files = require.context('.', true, /\.js$/)
const modules = {}
files.keys().forEach(v => {
  const isDir = /\w\/\w/.test(v)
  if (v === './index.js') return
  if (!isDir) {
    modules[v.replace(/(\.\/|\.js)/g, '')] = files(v).default
  } else {
    // 若有子文件夹
    const module = v.replace(/\.\/|\/\w+\.js/g, '')
    modules[module] = modules[module] || {
      state: {},
      getters: {},
      actions: {},
      mutations: {},
    }
    modules[module] = {
      namespaced: true,
      state: Object.assign(modules[module].state || {}, files(v).default.state),
      getters: Object.assign(
        modules[module].getters || {},
        files(v).default.getters,
      ),
      actions: Object.assign(
        modules[module].actions || {},
        files(v).default.actions,
      ),
      mutations: Object.assign(
        modules[module].mutations || {},
        files(v).default.mutations,
      ),
    }
  }
})
export default modules

接下来直接就可以在modules文件夹下创建属于自己的vuex模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值