mirror of
https://github.com/pengzhanbo/vuepress-theme-plume.git
synced 2026-04-23 10:58:13 +08:00
perf(theme): use vuepress virtual routes
This commit is contained in:
parent
d98785ada7
commit
24261ab269
@ -5,9 +5,9 @@
|
||||
<h2 align="center">vuepress-theme-plume</h2>
|
||||
|
||||
[](https://www.npmjs.com/package/vuepress-theme-plume)
|
||||
[](https://www.npmjs.com/package/vuepress-theme-plume)
|
||||
[](https://www.npmjs.com/package/vuepress-theme-plume)
|
||||

|
||||
<!-- [](https://www.npmjs.com/package/vuepress-theme-plume) -->
|
||||
|
||||
一个简约的,干净的,容易上手的 vuepress 主题,适用于博客和文档。
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<script lang="ts" setup>
|
||||
import { computed } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useRouter } from 'vuepress/client'
|
||||
import { EXTERNAL_URL_RE, normalizeLink } from '../utils/index.js'
|
||||
import IconExternalLink from './icons/IconExternalLink.vue'
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<script lang="ts" setup>
|
||||
import { useScrollLock } from '@vueuse/core'
|
||||
import { computed, ref, watch } from 'vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
import { useRoute } from 'vuepress/client'
|
||||
import { useBlogExtract, useThemeLocaleData } from '../composables/index.js'
|
||||
import { inBrowser } from '../utils/index.js'
|
||||
import AutoLink from './AutoLink.vue'
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<script lang="ts" setup>
|
||||
import { useRoute } from 'vue-router'
|
||||
import { useRoute } from 'vuepress/client'
|
||||
import { useBlogExtract } from '../composables/index.js'
|
||||
import AutoLink from './AutoLink.vue'
|
||||
import IconArchive from './icons/IconArchive.vue'
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<script lang="ts" setup>
|
||||
import { ref, watch } from 'vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
import { useRoute } from 'vuepress/client'
|
||||
|
||||
const route = useRoute()
|
||||
const backToTop = ref()
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<script setup lang="ts">
|
||||
import { computed } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useRouter } from 'vuepress/client'
|
||||
import { EXTERNAL_URL_RE } from '../utils/index.js'
|
||||
|
||||
interface Props {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import type { Ref } from 'vue'
|
||||
import { ref, watch } from 'vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
import { useRoute } from 'vuepress/client'
|
||||
|
||||
export interface UseNavReturn {
|
||||
isScreenOpen: Ref<boolean>
|
||||
|
||||
@ -1,10 +1,9 @@
|
||||
import { usePageData, usePageFrontmatter, usePageLang } from 'vuepress/client'
|
||||
import { usePageData, usePageFrontmatter, usePageLang, useRoute } from 'vuepress/client'
|
||||
import { isPlainObject, isString } from 'vuepress/shared'
|
||||
import { useBlogPostData } from '@vuepress-plume/plugin-blog-data/client'
|
||||
import type { NotesSidebarItem } from '@vuepress-plume/plugin-notes-data'
|
||||
import { computed } from 'vue'
|
||||
import type { ComputedRef, Ref } from 'vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
import type {
|
||||
NavItemWithLink,
|
||||
PlumeThemeBlogPostItem,
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import type { PageData } from 'vuepress/client'
|
||||
import { usePageData, usePageFrontmatter, withBase } from 'vuepress/client'
|
||||
import { usePageData, usePageFrontmatter, useRoute, withBase } from 'vuepress/client'
|
||||
import type {
|
||||
NotesData,
|
||||
NotesSidebarItem,
|
||||
@ -8,7 +8,6 @@ import { useNotesData } from '@vuepress-plume/plugin-notes-data/client'
|
||||
import { useMediaQuery } from '@vueuse/core'
|
||||
import type { ComputedRef, Ref } from 'vue'
|
||||
import { computed, onMounted, onUnmounted, ref, watchEffect } from 'vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
import type { PlumeThemePageData } from '../../shared/index.js'
|
||||
import { isActive } from '../utils/index.js'
|
||||
import { useThemeLocaleData } from './themeData.js'
|
||||
|
||||
@ -1,14 +1,8 @@
|
||||
import { isFunction, isString } from 'vuepress/shared'
|
||||
import { useRouter } from 'vue-router'
|
||||
import type { Router } from 'vue-router'
|
||||
import { useRouter } from 'vuepress/client'
|
||||
import type { Router } from 'vuepress/client'
|
||||
import type { NavItemWithLink } from '../../shared/index.js'
|
||||
|
||||
declare module 'vue-router' {
|
||||
interface RouteMeta {
|
||||
title?: string
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve a route with redirection
|
||||
*/
|
||||
@ -45,7 +39,7 @@ export function useNavLink(item: string): NavItemWithLink {
|
||||
// resolve the route correctly
|
||||
const resolved = useResolveRouteWithRedirect(encodeURI(item))
|
||||
return {
|
||||
text: resolved.meta.title || item,
|
||||
text: (resolved.meta as any).title || item,
|
||||
link: resolved.name === '404' ? item : resolved.fullPath,
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { customRef, nextTick, toValue, watch } from 'vue'
|
||||
import type { MaybeRef, MaybeRefOrGetter, Ref } from 'vue'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { useRoute, useRouter } from 'vuepress/client'
|
||||
import type { RouteParamValueRaw, Router } from 'vue-router'
|
||||
import { tryOnScopeDispose } from '@vueuse/core'
|
||||
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
<script setup lang="ts">
|
||||
import { usePageData } from 'vuepress/client'
|
||||
import { usePageData, useRoute } from 'vuepress/client'
|
||||
import { computed, provide, watch } from 'vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
import type { PlumeThemePageData } from '../../shared/index.js'
|
||||
import Backdrop from '../components/Backdrop.vue'
|
||||
import Blog from '../components/Blog.vue'
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user