;(async () => { const options = { moduleCache: { vue: Vue, less: less, storage: {} }, getFile(url) { return fetch(url).then(res => { if (res.ok) { return {getContentData: binary => binary ? res.arrayBuffer() : res.text()}; } else { throw Object.assign(new Error(url + ' ' + res.statusText), {res}); } }); }, addStyle(style) { const before = document.head.getElementsByTagName('style')[0] || null; const object = Object.assign(document.createElement('style'), {textContent: style}); document.head.insertBefore(object, before); }, }; const {loadModule} = window['vue3-sfc-loader']; const loadVue = (vuePath) => loadModule(vuePath, options); const loadVueFile = (vuePath) => () => loadVue(vuePath); const router = VueRouter.createRouter({ routes: [], history: VueRouter.createWebHashHistory(), }); router.beforeEach(function (to, fr, next) { let page = to.fullPath; if (to.fullPath === '/') { page = './static/template/index.vue'; } const name = page.replace(/[.\/]+/g, '_'); if (router.hasRoute(name)) { next(); } else { router.addRoute({name: name, path: to.fullPath, component: loadVueFile(page)}); next({name: name}); } }); router.afterEach(function (to) { console.log('afterEach', to); if (router.hasRoute(to.fullPath)) { router.removeRoute(to.fullPath) } }); window.$think = Vue.createApp({ name: 'ThinkAdmin', components: { layout: await loadVue('./static/template/layout.vue'), } }); // 全局字体文件 // const icons = await loadVue("https://unpkg.com/@element-plus/icons@0.0.11/lib/index.js"); // for (let i in icons) window.$think.component(i, icons[i]); window.$think.use(router).use(ElementPlus).mount(document.body); })().catch(function (ex) { console.error(ex); });