功能变化: 支持插件动态导入store

pull/102/head
李强 2023-06-22 08:48:25 +08:00
parent 2dfb4c80a9
commit 68047d3436
2 changed files with 41 additions and 5 deletions

View File

@ -2,11 +2,11 @@ import Vue from 'vue'
import Vuex from 'vuex'
import d2admin from './modules/d2admin'
import { getStoreModules } from '@/views/plugins'
Vue.use(Vuex)
// 创建一个空的modules对象
const modules = { d2admin: d2admin }
Object.assign(modules, getStoreModules())
export default new Vuex.Store({
modules: {
d2admin
}
modules
})

View File

@ -78,3 +78,39 @@ export const plugins = async function install (Vue, options) {
window.pluginsAll = components
return components
}
export const getStoreModules = function (Vue, options) {
// 获取每个插件的Store文件并进行注册
if (window.storeModules) return
const storeModules = {}
let components = []
components = components.concat(importAll(require.context('./', true, /index\.js$/)))
components = components.concat(importAll(require.context('@great-dream/', true, /index\.js$/)))
components = Array.from(new Set(components))
components.filter(async (key, index) => {
try {
const Module = require('@/views/plugins/' + key + '/src/store/index.js')
// 注册组件
if (Module.default) {
storeModules[key] = Module.default
console.log(`[${key}]store注册成功`)
return true
}
return false
} catch (exception) {
try {
const Module = require('@great-dream/' + key + '/src/store/index.js')
// 注册组件
if (Module.default) {
storeModules[key] = Module.default
return true
}
return false
} catch (exception) {
return false
}
}
})
window.storeModules = storeModules
return storeModules
}