mirror of
https://github.com/pengzhanbo/vuepress-theme-plume.git
synced 2026-04-23 10:58:13 +08:00
perf(theme): 调整 页面数据结构
This commit is contained in:
parent
400bf02856
commit
fc23e4950b
@ -7,18 +7,15 @@ import VPHome from '@theme/Home/VPHome.vue'
|
||||
import VPFriends from '@theme/VPFriends.vue'
|
||||
import { useData, useSidebar } from '../composables/index.js'
|
||||
import { inBrowser } from '../utils/index.js'
|
||||
import { useBlogPageData } from '../composables/page.js'
|
||||
|
||||
const props = defineProps<{
|
||||
isNotFound?: boolean
|
||||
}>()
|
||||
|
||||
const { hasSidebar } = useSidebar()
|
||||
const { frontmatter, page } = useData()
|
||||
|
||||
const isBlogLayout = computed(() => {
|
||||
const { type } = page.value
|
||||
return type === 'blog' || type === 'blog-archives' || type === 'blog-tags' || type === 'blog-categories'
|
||||
})
|
||||
const { frontmatter } = useData()
|
||||
const { isBlogLayout } = useBlogPageData()
|
||||
|
||||
watch([isBlogLayout, () => frontmatter.value.pageLayout], () => nextTick(() =>
|
||||
inBrowser && document.documentElement.classList.toggle(
|
||||
@ -54,6 +51,12 @@ watch([isBlogLayout, () => frontmatter.value.pageLayout], () => nextTick(() =>
|
||||
<template #blog-tags-after>
|
||||
<slot name="blog-tags-after" />
|
||||
</template>
|
||||
<template #blog-categories-before>
|
||||
<slot name="blog-categories-before" />
|
||||
</template>
|
||||
<template #blog-categories-after>
|
||||
<slot name="blog-categories-after" />
|
||||
</template>
|
||||
<template #blog-post-list-before>
|
||||
<slot name="blog-post-list-before" />
|
||||
</template>
|
||||
|
||||
@ -10,13 +10,13 @@ import { useEncrypt } from '../composables/encrypt.js'
|
||||
import { useSidebar } from '../composables/sidebar.js'
|
||||
import { useData } from '../composables/data.js'
|
||||
import { useHeaders } from '../composables/outline.js'
|
||||
import { useBlogPost } from '../composables/page.js'
|
||||
import { useBlogPageData } from '../composables/page.js'
|
||||
|
||||
const { page, theme, frontmatter, isDark } = useData()
|
||||
const route = useRoute()
|
||||
|
||||
const { hasSidebar, hasAside, leftAside } = useSidebar()
|
||||
const { isBlogPost } = useBlogPost()
|
||||
const { isBlogPost } = useBlogPageData()
|
||||
const headers = useHeaders()
|
||||
const { isPageDecrypted } = useEncrypt()
|
||||
|
||||
|
||||
@ -4,11 +4,11 @@ import { useReadingTimeLocale } from '@vuepress/plugin-reading-time/client'
|
||||
import VPLink from '@theme/VPLink.vue'
|
||||
import { useData } from '../composables/data.js'
|
||||
import { useTagColors } from '../composables/tag-colors.js'
|
||||
import { useBlogPost } from '../composables/page.js'
|
||||
import { useBlogPageData } from '../composables/page.js'
|
||||
import { useBlogExtract } from '../composables/blog-extract.js'
|
||||
|
||||
const { page, frontmatter: matter } = useData<'post'>()
|
||||
const { isBlogPost } = useBlogPost()
|
||||
const { isBlogPost } = useBlogPageData()
|
||||
const colors = useTagColors()
|
||||
const readingTime = useReadingTimeLocale()
|
||||
const { categories } = useBlogExtract()
|
||||
@ -53,7 +53,7 @@ const hasMeta = computed(() => readingTime.value.time || tags.value.length || cr
|
||||
<span v-if="index !== categoryList.length - 1" class="dot">›</span>
|
||||
</template>
|
||||
</div>
|
||||
<h1 class="vp-doc-title" :class="{ padding: !hasMeta }">
|
||||
<h1 class="vp-doc-title page-title" :class="{ padding: !hasMeta }">
|
||||
{{ page.title }}
|
||||
</h1>
|
||||
<div v-if="hasMeta" class="vp-doc-meta">
|
||||
|
||||
@ -5,7 +5,7 @@ import VPLocalNavOutlineDropdown from '@theme/VPLocalNavOutlineDropdown.vue'
|
||||
import { useSidebar } from '../composables/sidebar.js'
|
||||
import { useHeaders } from '../composables/outline.js'
|
||||
import { useData } from '../composables/data.js'
|
||||
import { useBlogPost } from '../composables/page.js'
|
||||
import { useBlogPageData } from '../composables/page.js'
|
||||
|
||||
const props = defineProps<{
|
||||
open: boolean
|
||||
@ -15,7 +15,7 @@ const props = defineProps<{
|
||||
defineEmits<(e: 'openMenu') => void>()
|
||||
|
||||
const { theme } = useData()
|
||||
const { isBlogPost } = useBlogPost()
|
||||
const { isBlogPost } = useBlogPageData()
|
||||
|
||||
const { hasSidebar } = useSidebar()
|
||||
const { y } = useWindowScroll()
|
||||
|
||||
@ -4,7 +4,7 @@ import { normalizeLink } from '../utils/index.js'
|
||||
import { useThemeData } from './theme-data.js'
|
||||
import { useData } from './data.js'
|
||||
import { getSidebarFirstLink, useSidebarData } from './sidebar.js'
|
||||
import { useBlogPost } from './page.js'
|
||||
import { useBlogPageData } from './page.js'
|
||||
|
||||
export function useLangs({
|
||||
removeCurrent = true,
|
||||
@ -13,7 +13,7 @@ export function useLangs({
|
||||
const { page } = useData()
|
||||
const routeLocale = useRouteLocale()
|
||||
const sidebar = useSidebarData()
|
||||
const { isBlogPost } = useBlogPost()
|
||||
const { isBlogPost } = useBlogPageData()
|
||||
|
||||
const currentLang = computed(() => {
|
||||
const link = routeLocale.value
|
||||
|
||||
@ -2,7 +2,7 @@ import { computed } from 'vue'
|
||||
import { useData } from './data.js'
|
||||
import { usePostList } from './blog-data.js'
|
||||
|
||||
export function useBlogPost() {
|
||||
export function useBlogPageData() {
|
||||
const { page } = useData()
|
||||
const postList = usePostList()
|
||||
|
||||
@ -10,7 +10,13 @@ export function useBlogPost() {
|
||||
return postList.value.some(item => item.path === page.value.path)
|
||||
})
|
||||
|
||||
const isBlogLayout = computed(() => {
|
||||
const type = page.value.type
|
||||
return type === 'blog' || type === 'blog-archives' || type === 'blog-tags' || type === 'blog-categories'
|
||||
})
|
||||
|
||||
return {
|
||||
isBlogPost,
|
||||
isBlogLayout,
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,7 +7,7 @@ import { resolveNavLink } from '../utils/index.js'
|
||||
import { usePostList } from './blog-data.js'
|
||||
import { useSidebar } from './sidebar.js'
|
||||
import { useData } from './data.js'
|
||||
import { useBlogPost } from './page.js'
|
||||
import { useBlogPageData } from './page.js'
|
||||
|
||||
export function usePrevNext() {
|
||||
const route = useRoute()
|
||||
@ -15,7 +15,7 @@ export function usePrevNext() {
|
||||
const { sidebar } = useSidebar()
|
||||
const postList = usePostList() as unknown as Ref<PlumeThemeBlogPostItem[]>
|
||||
const locale = usePageLang()
|
||||
const { isBlogPost } = useBlogPost()
|
||||
const { isBlogPost } = useBlogPageData()
|
||||
|
||||
const prevNavList = computed(() => {
|
||||
const prevConfig = resolveFromFrontmatterConfig(frontmatter.value.prev)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user