perf(theme): use vuepress virtual routes

This commit is contained in:
pengzhanbo 2024-02-17 00:26:41 +08:00
parent d98785ada7
commit 24261ab269
12 changed files with 14 additions and 23 deletions

View File

@ -5,9 +5,9 @@
<h2 align="center">vuepress-theme-plume</h2>
[![npm version](https://img.shields.io/npm/v/vuepress-theme-plume?color=32A9C3&labelColor=1B3C4A&label=npm)](https://www.npmjs.com/package/vuepress-theme-plume)
[![npm beta download](https://img.shields.io/npm/dt/@vuepress-plume/vuepress-theme-plume?color=32A9C3&labelColor=1B3C4A&label=beta%20downloads)](https://www.npmjs.com/package/vuepress-theme-plume)
[![npm download](https://img.shields.io/npm/dy/vuepress-theme-plume?color=32A9C3&labelColor=1B3C4A&label=downloads)](https://www.npmjs.com/package/vuepress-theme-plume)
![GitHub License](https://img.shields.io/github/license/pengzhanbo/vuepress-theme-plume?color=32A9C3&labelColor=1B3C4A)
<!-- [![npm beta download](https://img.shields.io/npm/dt/@vuepress-plume/vuepress-theme-plume?color=32A9C3&labelColor=1B3C4A&label=beta%20downloads)](https://www.npmjs.com/package/vuepress-theme-plume) -->
一个简约的,干净的,容易上手的 vuepress 主题,适用于博客和文档。

View File

@ -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'

View File

@ -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'

View File

@ -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'

View File

@ -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()

View File

@ -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 {

View File

@ -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>

View File

@ -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,

View File

@ -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'

View File

@ -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,
}
}

View File

@ -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'

View File

@ -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'