功能变化: 支持插件动态导入store
parent
2dfb4c80a9
commit
68047d3436
|
@ -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
|
||||
})
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue