This commit is contained in:
邹景立 2021-12-20 21:58:44 +08:00
commit f9649653bf
8 changed files with 7592 additions and 135 deletions

View File

@ -6,10 +6,10 @@
##### **集成组件:** ##### **集成组件:**
* vue v3.2.22 * vue v3.2.26
* vue.router v4.0.12 * vue.router v4.0.12
* vue.sfc.loader v0.8.4 * vue.sfc.loader v0.8.4
* vue element-plus v1.2.0-beta.3 * vue element-plus v1.2.0-beta.6
##### **在线体验:** ##### **在线体验:**

View File

@ -8,9 +8,8 @@ window.appRoot = (function (script) {
moduleCache: { moduleCache: {
vue: Vue, vue: Vue,
less: less less: less
}, }, getFile(url) {
getFile(url) { if (!(/^(https?:)?\/\//)) {
if (!/^(https?:)?\/\//.test(url)) {
url = (appRoot + url).replace(/\/+.?\/+/g, '/'); url = (appRoot + url).replace(/\/+.?\/+/g, '/');
} }
return fetch(url).then(res => { return fetch(url).then(res => {
@ -22,8 +21,7 @@ window.appRoot = (function (script) {
throw Object.assign(new Error(url + ' ' + res.statusText), {res}); throw Object.assign(new Error(url + ' ' + res.statusText), {res});
} }
}); });
}, }, addStyle(style) {
addStyle(style) {
const before = document.head.getElementsByTagName('style')[0] || null; const before = document.head.getElementsByTagName('style')[0] || null;
const object = Object.assign(document.createElement('style'), {textContent: style}); const object = Object.assign(document.createElement('style'), {textContent: style});
document.head.insertBefore(object, before); document.head.insertBefore(object, before);
@ -32,8 +30,7 @@ window.appRoot = (function (script) {
const {loadModule} = window['vue3-sfc-loader']; const {loadModule} = window['vue3-sfc-loader'];
const loadVue = (vuePath) => loadModule(vuePath, options); const loadVue = (vuePath) => loadModule(vuePath, options);
const loadVueFile = (vuePath) => () => loadVue(vuePath); // const loadVueFile = (vuePath) => () => loadVue(vuePath);
const router = VueRouter.createRouter({ const router = VueRouter.createRouter({
routes: [], history: VueRouter.createWebHashHistory(), routes: [], history: VueRouter.createWebHashHistory(),
}); });
@ -41,55 +38,49 @@ window.appRoot = (function (script) {
// 添加默认路由 // 添加默认路由
router.addRoute({path: '/', redirect: '/static/template/pages/one.vue'}); router.addRoute({path: '/', redirect: '/static/template/pages/one.vue'});
// 路由前置处理 // 动态注册路由
let loading = null; let loading = null;
router.beforeEach(function (to, fr, next) { router.beforeEach(function (to, fr, next) {
let name = to.fullPath.replace(/[.\/]+/g, '_'); let name = to.fullPath.replace(/[.\/]+/g, '_');
if (router.hasRoute(name)) { if (router.hasRoute(name)) {
console.log(''); console.log('open.load', to.fullPath)
console.log('load.open', to.fullPath)
loading = ElementPlus.ElLoading.service({ loading = ElementPlus.ElLoading.service({
lock: true, text: 'Loading', background: 'rgba(0, 0, 0, 0.3)', lock: true, text: 'Loading', background: 'rgba(0, 0, 0, 0.3)',
}); });
next(); next();
} else { } else {
router.addRoute({name: name, path: to.fullPath, component: loadVueFile(to.fullPath)}); router.addRoute({name: name, path: to.fullPath, component: () => loadVue(to.fullPath)});
next({name: name}); next({name: name});
} }
}); });
// 动态注销路由 // 动态注销路由
router.afterEach(function (to) { router.afterEach(function (to) {
let name = to.fullPath.replace(/[.\/]+/g, '_'); let name = to.fullPath.replace(/[.\/]+/g, '_');
if (router.hasRoute(name)) { if (router.hasRoute(name)) {
router.removeRoute(name) router.removeRoute(name)
} }
if (loading) { if (loading) {
console.log('load.done') loading = loading.close(), null;
loading.close();
loading = null;
} }
}); });
// window.$think = Vue.createApp({ // 创建 Vue 应用
// // name: 'ThinkAdmin',
// components: {
// layout: await loadVue('./static/template/layout.vue'),
// }
// });
const app = Vue.createApp(Vue.defineAsyncComponent(function () { const app = Vue.createApp(Vue.defineAsyncComponent(function () {
return loadVue('/static/template/layout.vue'); return loadVue('/static/template/layout.vue');
})); }));
// 定义全局缓存
app.cache = {loadVue: loadVue};
// 全局字体文件 // 全局字体文件
// const icons = await loadVue("https://unpkg.com/@element-plus/icons@0.0.11/lib/index.js"); app.cache.icons = await loadVue("/static/plugs/core/vue.element.icons.js");
// for (let i in icons) app.component(i, icons[i]); for (let i in app.cache.icons) app.component(i, app.cache.icons[i]);
app.use(router).use(ElementPlus).mount(document.body); // 注册获取应用
window.getApp = () => app;
})().catch(function (ex) { // 应用组件及路由
console.error(ex); app.use(ElementPlus).use(router).mount(document.body);
});
})().catch(ex => console.error(ex));

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -2,7 +2,6 @@
<el-container> <el-container>
<el-header> <el-header>
<el-menu <el-menu
:default-active="1"
mode="horizontal" mode="horizontal"
text-color="#fff" text-color="#fff"
background-color="rgba(54,25,88,0.9)" background-color="rgba(54,25,88,0.9)"
@ -46,12 +45,12 @@
</el-tooltip> </el-tooltip>
</template> </template>
<h5 v-text="menu.title"></h5> <h5 v-text="menu.title"></h5>
<el-menu :default-active="1" :open="1"> <el-menu :open="1">
<el-sub-menu index="1"> <el-sub-menu index="1">
<template #title> <template #title>
<!--<el-icon>--> <el-icon>
<!--<location></location>--> <location></location>
<!--</el-icon>--> </el-icon>
<span>Navigator One</span> <span>Navigator One</span>
</template> </template>
@ -61,21 +60,21 @@
</el-sub-menu> </el-sub-menu>
<el-menu-item index="2" data-route="/static/template/pages/two.vue"> <el-menu-item index="2" data-route="/static/template/pages/two.vue">
<!--<el-icon>--> <el-icon>
<!--<icon-menu></icon-menu>--> <aim></aim>
<!--</el-icon>--> </el-icon>
<span>Navigator Two</span> <span>Navigator Two</span>
</el-menu-item> </el-menu-item>
<el-menu-item index="3" data-route="/static/template/pages/thr.vue"> <el-menu-item index="3" data-route="/static/template/pages/thr.vue">
<!--<el-icon>--> <el-icon>
<!--<document></document>--> <document></document>
<!--</el-icon>--> </el-icon>
<span>Navigator Three</span> <span>Navigator Three</span>
</el-menu-item> </el-menu-item>
<el-menu-item index="4" data-route="/static/template/pages/four.vue"> <el-menu-item index="4" data-route="/static/template/pages/four.vue">
<!--<el-icon>--> <el-icon>
<!--<setting></setting>--> <setting></setting>
<!--</el-icon>--> </el-icon>
<span>Navigator Four</span> <span>Navigator Four</span>
</el-menu-item> </el-menu-item>
</el-menu> </el-menu>

View File

@ -11,81 +11,11 @@
</el-header> </el-header>
<el-main> <el-main>
<el-scrollbar> <el-scrollbar>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div> <div v-for="icon in icons">
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div> <div><b>{{ icon.name }}</b>{{ icon }}</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div> </div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
<div>{{ userName }}: 你好这里是为下一代 ThinkAdmin 后台管理系统预设计的 UI 结构</div>
</el-scrollbar> </el-scrollbar>
</el-main> </el-main>
</el-container> </el-container>
@ -95,7 +25,8 @@
export default { export default {
data() { data() {
return { return {
userName: "ThinkAdmin" userName: "ThinkAdmin",
icons: getApp().cache.icons
} }
} }
} }