48 lines
1.4 KiB
JavaScript
48 lines
1.4 KiB
JavaScript
// 定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,则所有的组件都将被注册
|
||
/**
|
||
*
|
||
* @param Vue 外部接入Vue
|
||
* @param params showList:打印加载的应用;apps:加载的应用文件名数组
|
||
*/
|
||
import core from './core.import'
|
||
import dvui from '../project/dvui/entries'
|
||
|
||
const install = function (Vue, params) {
|
||
if (install.installed) return
|
||
// 遍历注册全局组件
|
||
let apps = []
|
||
let contexts = require.context('.', true, /\.(\/.+)\/App[^\/]+\.vue$/)
|
||
if (contexts) {
|
||
contexts.keys().map(e => {
|
||
if (contexts(e).default) {
|
||
if (params?.apps) {
|
||
if (params?.apps.includes(contexts(e).default.name)) {
|
||
apps.push(contexts(e).default)
|
||
Vue.component(contexts(e).default.name, contexts(e).default)
|
||
}
|
||
} else {
|
||
apps.push(contexts(e).default)
|
||
Vue.component(contexts(e).default.name, contexts(e).default)
|
||
}
|
||
}
|
||
})
|
||
!!params?.showList && console.log(apps.map(e => e.name))
|
||
}
|
||
core?.map(app => {
|
||
apps.push(app.component)
|
||
Vue.component(app.name, app.component)
|
||
})
|
||
Vue.use(dvui)
|
||
return Promise.resolve(apps)
|
||
}
|
||
|
||
// 判断是否是直接引入文件
|
||
if (typeof window !== 'undefined' && window.Vue) {
|
||
install(window.Vue)
|
||
}
|
||
|
||
export default {
|
||
// 导出的对象必须具有 install,才能被 Vue.use() 方法安装
|
||
install
|
||
}
|