import store from "../store"; import {waiting} from "../utils"; import appEntry from "../views/appEntry"; import router from "./router"; export default { routes: () => store.state.apps, init() { //约束正则式 store.commit("cleanApps") // 自动化本工程应用 this.loadApps() }, loadApps() { //新App的自动化格式 let apps = require.context('../../packages/', true, /\.(\/.+)\/App[A-Z][^\/]+\.vue$/, 'lazy-once'), projects = require.context('../../project/', true, /\.(\/.+)\/App[A-Z][^\/]+\.vue$/, 'lazy-once') const promise = (mods, base) => Promise.all(mods.keys().map(path => mods(path).then(file => { if (file.default) { let {name, label} = file.default, addApp = { name: [base, path.replace(/\.\/?(vue)?/g, '')?.split("/")].flat().join("_"), label: label || name, path: `/${base}${path.replace(/\.(\/.+\/App.+)\.vue$/, '$1')}`, component: appEntry, module: file.default } waiting.setContent(`加载${name}...`) router.addRoute(addApp) //命名规范入口文件必须以App开头 return store.commit("addApp", addApp) } else return 0 }))) waiting.init({innerHTML: '应用加载中..'}) Promise.all([ promise(apps, "packages"), promise(projects, "project") ]).finally(() => waiting.close()) } }