perf: 优化首页

This commit is contained in:
xiaoxian521 2022-11-29 15:08:05 +08:00
parent 7f0354cd63
commit fe9f6e5493
8 changed files with 106 additions and 28 deletions

View File

@ -35,6 +35,7 @@ export const include = [
"vue-json-pretty", "vue-json-pretty",
"@logicflow/core", "@logicflow/core",
"@pureadmin/utils", "@pureadmin/utils",
"vue3-markdown-it",
"responsive-storage", "responsive-storage",
"@howdyjs/mouse-menu", "@howdyjs/mouse-menu",
"@logicflow/extension", "@logicflow/extension",

View File

@ -36,7 +36,7 @@
"@logicflow/extension": "^1.1.30", "@logicflow/extension": "^1.1.30",
"@pureadmin/descriptions": "^1.1.0", "@pureadmin/descriptions": "^1.1.0",
"@pureadmin/table": "^1.8.0", "@pureadmin/table": "^1.8.0",
"@pureadmin/utils": "^1.6.7", "@pureadmin/utils": "^1.7.1",
"@vueuse/core": "^9.6.0", "@vueuse/core": "^9.6.0",
"@vueuse/motion": "2.0.0-beta.12", "@vueuse/motion": "2.0.0-beta.12",
"@wangeditor/editor": "^5.1.21", "@wangeditor/editor": "^5.1.21",

8
pnpm-lock.yaml generated
View File

@ -22,7 +22,7 @@ specifiers:
"@pureadmin/descriptions": ^1.1.0 "@pureadmin/descriptions": ^1.1.0
"@pureadmin/table": ^1.8.0 "@pureadmin/table": ^1.8.0
"@pureadmin/theme": ^2.4.0 "@pureadmin/theme": ^2.4.0
"@pureadmin/utils": ^1.6.7 "@pureadmin/utils": ^1.7.1
"@types/element-resize-detector": 1.1.3 "@types/element-resize-detector": 1.1.3
"@types/intro.js": ^5.1.0 "@types/intro.js": ^5.1.0
"@types/js-cookie": ^3.0.1 "@types/js-cookie": ^3.0.1
@ -134,7 +134,7 @@ dependencies:
"@logicflow/extension": 1.1.31 "@logicflow/extension": 1.1.31
"@pureadmin/descriptions": 1.1.1_element-plus@2.2.25 "@pureadmin/descriptions": 1.1.1_element-plus@2.2.25
"@pureadmin/table": 1.8.0_element-plus@2.2.25 "@pureadmin/table": 1.8.0_element-plus@2.2.25
"@pureadmin/utils": 1.6.7_aotapuqn7htzdjltsyimavekky "@pureadmin/utils": 1.7.1_aotapuqn7htzdjltsyimavekky
"@vueuse/core": 9.6.0_vue@3.2.45 "@vueuse/core": 9.6.0_vue@3.2.45
"@vueuse/motion": 2.0.0-beta.12_vue@3.2.45 "@vueuse/motion": 2.0.0-beta.12_vue@3.2.45
"@wangeditor/editor": 5.1.23 "@wangeditor/editor": 5.1.23
@ -1367,10 +1367,10 @@ packages:
string-hash: 1.1.3 string-hash: 1.1.3
dev: true dev: true
/@pureadmin/utils/1.6.7_aotapuqn7htzdjltsyimavekky: /@pureadmin/utils/1.7.1_aotapuqn7htzdjltsyimavekky:
resolution: resolution:
{ {
integrity: sha512-SNOGyhrzqMzySpicFd/ptJS7xOt9p2xGuNXFZwhq1elruPKRLRa7dl+OHGrIWzQIvhtbOf/yje9mnOFOY77PZA== integrity: sha512-LqYdMR1xvRDtPp66osOY6usmta6LNGMuON14iONv4ZUC/esQ3RflHlT5glGjOfGUSGCk8O94F5LVS/PVC9Q3Ng==
} }
peerDependencies: peerDependencies:
dayjs: "*" dayjs: "*"

View File

@ -7,7 +7,7 @@ defineOptions({
name: "Danmaku" name: "Danmaku"
}); });
const danmaku = ref<any>(null); const danmaku = ref();
const danmus = ref<any[]>(getDanmuData()); const danmus = ref<any[]>(getDanmuData());
const danmuMsg = ref<string>(""); const danmuMsg = ref<string>("");
let timer = 0; let timer = 0;
@ -112,7 +112,7 @@ function addDanmu() {
target="_blank" target="_blank"
style="font-size: 16px; margin: 0 4px 5px" style="font-size: 16px; margin: 0 4px 5px"
> >
vue-danmaku vue3-danmaku
</el-link> </el-link>
</span> </span>
</div> </div>

View File

@ -39,12 +39,14 @@ setOptions(
// width: "70", // width: "70",
// overflow: "truncate" // overflow: "truncate"
}, },
data: ["open_issues", "forks", "watchers", "star"] data: ["open_issues", "forks", "watchers", "star"],
triggerEvent: true
} }
], ],
yAxis: [ yAxis: [
{ {
type: "value" type: "value",
triggerEvent: true
} }
], ],
series: [ series: [
@ -53,7 +55,8 @@ setOptions(
type: "bar", type: "bar",
data: [1000, 10000, 20000, 66666] data: [1000, 10000, 20000, 66666]
} }
] ],
addTooltip: true
}, },
{ {
name: "click", name: "click",

View File

@ -30,10 +30,12 @@ setOptions(
axisLabel: { axisLabel: {
interval: 0 interval: 0
}, },
data: ["open_issues", "forks", "watchers", "star"] data: ["open_issues", "forks", "watchers", "star"],
triggerEvent: true
}, },
yAxis: { yAxis: {
type: "value" type: "value",
triggerEvent: true
}, },
series: [ series: [
{ {
@ -41,7 +43,8 @@ setOptions(
type: "line", type: "line",
areaStyle: {} areaStyle: {}
} }
] ],
addTooltip: true
}, },
{ {
name: "click", name: "click",

View File

@ -1,20 +1,40 @@
<script setup lang="ts"> <script setup lang="ts">
import axios from "axios"; import axios from "axios";
import VueDanmaku from "vue3-danmaku";
import Bar from "./components/Bar.vue"; import Bar from "./components/Bar.vue";
import Pie from "./components/Pie.vue"; import Pie from "./components/Pie.vue";
import Markdown from "vue3-markdown-it"; import Markdown from "vue3-markdown-it";
import Line from "./components/Line.vue"; import Line from "./components/Line.vue";
import TypeIt from "@/components/ReTypeit"; import TypeIt from "@/components/ReTypeit";
import Github from "./components/Github.vue"; import Github from "./components/Github.vue";
import { ref, computed, markRaw } from "vue";
import { openLink, randomColor } from "@pureadmin/utils"; import { openLink, randomColor } from "@pureadmin/utils";
import { useRenderFlicker } from "@/components/ReFlicker"; import { useRenderFlicker } from "@/components/ReFlicker";
import { ref, computed, markRaw, onMounted, onUnmounted } from "vue";
defineOptions({ defineOptions({
name: "Welcome" name: "Welcome"
}); });
const danmus = [
"太好用了吧",
"so easy",
"效率大大提高呀",
"还有精简版还分国际化和非国际化Perfect 😘",
"好多组件呀,爱啦爱啦 ❤️",
"精简版开发体验也太赞了吧 🙀",
"pure-admin-table 真方便呀",
"哇塞pure-admin-utils 好多常用、易用的工具呀",
"我要 star 这个项目,爱啦爱啦",
"免费、开源做到这个程度,真不错 👍",
"文档简单易懂,上手真快",
"呀!还有免费的教学视频呢,我要去学习一下咯",
"稳定、可靠,未来可期呀,加油!",
"太卷了,太卷了,慢点让我跟上 😄"
];
let timer = 0;
const list = ref(); const list = ref();
const danmaku = ref();
const date: Date = new Date(); const date: Date = new Date();
const loading = ref<boolean>(true); const loading = ref<boolean>(true);
const titleClass = computed(() => { const titleClass = computed(() => {
@ -35,6 +55,13 @@ const greetings = computed(() => {
} }
}); });
function resizeHandler() {
if (timer) clearTimeout(timer);
timer = window.setTimeout(() => {
danmaku.value.resize();
}, 500);
}
axios axios
.get("https://api.github.com/repos/xiaoxian521/vue-pure-admin/releases") .get("https://api.github.com/repos/xiaoxian521/vue-pure-admin/releases")
.then(res => { .then(res => {
@ -50,6 +77,14 @@ axios
}; };
}); });
}); });
onMounted(() => {
window.onresize = () => resizeHandler();
});
onUnmounted(() => {
window.onresize = null;
});
</script> </script>
<template> <template>
@ -91,20 +126,40 @@ axios
} }
}" }"
> >
<el-card style="height: 360px"> <el-card style="height: 410px">
<template #header> <template #header>
<span :class="titleClass"> <a
:class="titleClass"
href="https://github.com/xiaoxian521"
target="_black"
>
<TypeIt <TypeIt
:className="'type-it1'" :className="'type-it1'"
:values="['GitHub信息']" :values="['GitHub信息']"
:cursor="false" :cursor="false"
:speed="120" :speed="120"
/> />
</span> </a>
</template> </template>
<el-skeleton animated :rows="7" :loading="loading"> <el-skeleton animated :rows="7" :loading="loading">
<template #default> <template #default>
<Github /> <Github />
<vue-danmaku
ref="danmaku"
loop
useSlot
isSuspend
randomChannel
:debounce="1200"
:danmus="danmus"
style="width: 100%; height: 80px"
>
<template v-slot:dm="{ danmu }">
<p :style="{ color: randomColor({ type: 'hex' }) as string }">
{{ danmu }}
</p>
</template>
</vue-danmaku>
</template> </template>
</el-skeleton> </el-skeleton>
</el-card> </el-card>
@ -130,20 +185,24 @@ axios
} }
}" }"
> >
<el-card style="height: 360px"> <el-card style="height: 410px">
<template #header> <template #header>
<span :class="titleClass"> <a
:class="titleClass"
href="https://github.com/xiaoxian521/vue-pure-admin/releases"
target="_black"
>
<TypeIt <TypeIt
:className="'type-it2'" :className="'type-it2'"
:values="['Pure-Admin 版本日志']" :values="['Pure-Admin 版本日志']"
:cursor="false" :cursor="false"
:speed="120" :speed="80"
/> />
</span> </a>
</template> </template>
<el-skeleton animated :rows="7" :loading="loading"> <el-skeleton animated :rows="7" :loading="loading">
<template #default> <template #default>
<el-scrollbar height="274px"> <el-scrollbar height="324px">
<el-timeline v-show="list?.length > 0"> <el-timeline v-show="list?.length > 0">
<el-timeline-item <el-timeline-item
v-for="(item, index) in list" v-for="(item, index) in list"
@ -183,14 +242,18 @@ axios
> >
<el-card> <el-card>
<template #header> <template #header>
<span :class="titleClass"> <a
:class="titleClass"
href="https://github.com/xiaoxian521/vue-pure-admin"
target="_black"
>
<TypeIt <TypeIt
:className="'type-it3'" :className="'type-it3'"
:values="['GitHub饼图信息']" :values="['GitHub饼图信息']"
:cursor="false" :cursor="false"
:speed="120" :speed="120"
/> />
</span> </a>
</template> </template>
<el-skeleton animated :rows="7" :loading="loading"> <el-skeleton animated :rows="7" :loading="loading">
<template #default> <template #default>
@ -222,14 +285,18 @@ axios
> >
<el-card> <el-card>
<template #header> <template #header>
<span :class="titleClass"> <a
:class="titleClass"
href="https://github.com/xiaoxian521/vue-pure-admin"
target="_black"
>
<TypeIt <TypeIt
:className="'type-it4'" :className="'type-it4'"
:values="['GitHub折线图信息']" :values="['GitHub折线图信息']"
:cursor="false" :cursor="false"
:speed="120" :speed="120"
/> />
</span> </a>
</template> </template>
<el-skeleton animated :rows="7" :loading="loading"> <el-skeleton animated :rows="7" :loading="loading">
<template #default> <template #default>
@ -261,14 +328,18 @@ axios
> >
<el-card> <el-card>
<template #header> <template #header>
<span :class="titleClass"> <a
:class="titleClass"
href="https://github.com/xiaoxian521/vue-pure-admin"
target="_black"
>
<TypeIt <TypeIt
:className="'type-it5'" :className="'type-it5'"
:values="['GitHub柱状图信息']" :values="['GitHub柱状图信息']"
:cursor="false" :cursor="false"
:speed="120" :speed="120"
/> />
</span> </a>
</template> </template>
<el-skeleton animated :rows="7" :loading="loading"> <el-skeleton animated :rows="7" :loading="loading">
<template #default> <template #default>