From 757536b7c27202b6d97561691ac9d70fe2ab2b04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BF=9E=E8=BF=9C=E7=94=9F?= Date: Wed, 4 Sep 2024 18:35:53 +0800 Subject: [PATCH] feat --- README.md | 11 +- assets/index.css | 2 +- components/Side.vue | 1 - components/Toc.vue | 70 +- components/content/ProseImg.vue | 40 +- components/content/ProseUl.vue | 39 + ...62\346\237\223\346\234\272\345\210\266.md" | 2 +- nuxt.config.ts | 16 +- package.json | 4 +- pages/[...slug].vue | 2 + pnpm-lock.yaml | 716 +++++++++--------- server/plugins/images.ts | 22 +- 12 files changed, 471 insertions(+), 454 deletions(-) create mode 100644 components/content/ProseUl.vue diff --git a/README.md b/README.md index 6d88125b..af02a336 100644 --- a/README.md +++ b/README.md @@ -19,15 +19,12 @@ Thanks for the help of the following projects. - [x] 目录导航 - [x] giscus 评论功能 - [x] 夜间模式 +- [x] algolia docsearch 文档搜索 +- [x] 图片优化 - 部署 - - [ ] + - [x] cloudflare page - [x] 工具栏 - [ ] 图标标亮 - [ ] 侧边栏 -- [x] 图片优化 -- [x] 通过 GithubActions 自动化部署到 GithubPage - - [x] 自定义域名 - [ ] PWA 安装 - - [ ] SW 缓存 -- [ ] 全文搜索 -- [ ] 用户订阅 \ No newline at end of file + - [ ] SW 缓存 \ No newline at end of file diff --git a/assets/index.css b/assets/index.css index 362d0a01..f801a1dc 100644 --- a/assets/index.css +++ b/assets/index.css @@ -1,6 +1,6 @@ .main-container { display: grid; - grid-template-columns: 1fr [main-start] minmax(0, 768px) [main-end] 1fr; + grid-template-columns: 1fr [main-start] minmax(0, 900px) [main-end] 1fr; .place-main { grid-column: main; diff --git a/components/Side.vue b/components/Side.vue index 278934d0..0beba72d 100644 --- a/components/Side.vue +++ b/components/Side.vue @@ -47,7 +47,6 @@ const SideComponent = defineComponent({ return { checked, getComp() { - console.log("side comp: ", comp); return comp; }, from(c: Component) { diff --git a/components/Toc.vue b/components/Toc.vue index 984b3337..a81bf726 100644 --- a/components/Toc.vue +++ b/components/Toc.vue @@ -2,7 +2,11 @@ import { useSubscription } from "@vueuse/rxjs"; import { fromEvent, from, startWith } from "~/node_modules/rxjs"; import { - debounceTime, switchMap, filter, tap, throttleTime + debounceTime, + switchMap, + filter, + tap, + throttleTime, } from "~/node_modules/rxjs/operators"; import { ref } from "vue"; import { articleMounted$ } from "~/pages/[...slug].vue"; @@ -10,14 +14,16 @@ import { articleMounted$ } from "~/pages/[...slug].vue"; export default defineComponent({ setup() { const archors = computed(() => { - return Array.from(articleMounted$.value?.querySelectorAll("h1, h2, h3") ?? []) - }) - const itemsRef = ref([]) + return Array.from( + articleMounted$.value?.querySelectorAll("h1, h2, h3") ?? [] + ); + }); + const itemsRef = ref([]); // #region 滚动自动目录定位 - if (process.client) { + if (import.meta.browser) { onMounted(() => { - const archorsOffsetTop = archors.value.map(e => e.offsetTop) + const archorsOffsetTop = archors.value.map((e) => e.offsetTop); useSubscription( fromEvent(document, "scroll") @@ -29,47 +35,59 @@ export default defineComponent({ itemsRef.value[+idx]?.classList.remove("active"); }), filter(([idx, offsetTop]) => { - let d = window.scrollY - return d + 2 <= (offsetTop) // 2 误差调整 + let d = window.scrollY; + return d + 2 <= offsetTop; // 2 误差调整 }), throttleTime(10), tap(([idx, offsetTop]) => { itemsRef.value[+idx - 1]?.classList.add("active"); - }), - ).subscribe() - ) - }) + }) + ) + .subscribe() + ); + }); } // #endregion - let i = 0 + let i = 0; const tree = (list: any[]) => { return ( - ) - } + ); + }; const { toc, page } = useContent(); return () => { - i = 0 + i = 0; return archors.value.length ? ( - ) : null - } - } -}) - \ No newline at end of file + + ) : null; + }; + }, +}); + diff --git a/components/content/ProseImg.vue b/components/content/ProseImg.vue index 711ed0f0..2f027392 100644 --- a/components/content/ProseImg.vue +++ b/components/content/ProseImg.vue @@ -1,33 +1,20 @@