惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
WordPress大学
WordPress大学
云风的 BLOG
云风的 BLOG
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
腾讯CDC
V
V2EX
Martin Fowler
Martin Fowler
A
About on SuperTechFans
大猫的无限游戏
大猫的无限游戏
Blog — PlanetScale
Blog — PlanetScale
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
C
Check Point Blog
博客园 - 【当耐特】
Cisco Talos Blog
Cisco Talos Blog
The Hacker News
The Hacker News
K
Kaspersky official blog
Security Latest
Security Latest
H
Help Net Security
博客园_首页
美团技术团队
Spread Privacy
Spread Privacy
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
G
Google Developers Blog
NISL@THU
NISL@THU
爱范儿
爱范儿
I
Intezer
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
N
News and Events Feed by Topic
P
Privacy International News Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog
S
Security @ Cisco Blogs
Schneier on Security
Schneier on Security
雷峰网
雷峰网
人人都是产品经理
人人都是产品经理
V
Vulnerabilities – Threatpost
W
WeLiveSecurity
P
Palo Alto Networks Blog
G
GRAHAM CLULEY
Hacker News: Ask HN
Hacker News: Ask HN
I
InfoQ
The Cloudflare Blog
F
Full Disclosure
SecWiki News
SecWiki News
宝玉的分享
宝玉的分享
N
Netflix TechBlog - Medium

晓雨杂记

为 PCL CE 添加 Sentry 集成 【转载】舞萌 DX 报错 8103 / 8106 以及 0949 问题原因分析和解决方案 【转载】舞萌国服 1.53 补丁更新内容速览 站点之间,是生活的片段 EdgeOne 免费版,Yes! 2025 年,把一加 6T 作为主力机是什么体验?(上) 2024 年终总结 国行 iPhone 12 强开 Apple 智能 窗边浅谈:形同陌路的“朋友” 没有衡水命,一身衡水病——盲目复制衡水模式的意义何在? 在 Valaxy 中使用 Artalk 作为评论系统 窗边浅谈:序章 【转载】关于 HiPer 的安全性讨论,以及对于近期一些小事的简单介绍 2023 年终回顾 期中前半学期回顾 用起来还不错——国区 Apple Music 浅谈 万物皆可美化之 VSCode 博客二周年——我对博客的想法 我过不去的坎——数学 将 Waline 从 LeanCloud 迁移到 MongoDB Cloud 初入舞萌 DX 记一次重装 Windows 记一次被 DDoS 中考成绩! OMORI 初体验 中考之后 谈人际交往 我的音乐品味 自建 jsDelivr 镜像 渺软公益 CDN 2023 中考宣言 晓雨和林小雨的奇妙日常 为了纯粹的快——来看看我对我的博客做了什么 Valaxy 与 Cloudflare 的邂逅——将 Valaxy 博客部署到 Cloudflare Pages Minecraft 国际版玩家对近期事件的回应 对网易与 Minecraft 国际版的担忧 再见,Notepad++ 你的下一个启动器,何必是启动器 诈尸?—— 第三方网易云音乐客户端 LyricEase Valaxy —— 快到没边的全新静态博客框架 见证历史了——谷歌取消大陆地区翻译服务 在 iOS 桌面查看你的原神账号信息——原神披萨小助手 中秋节快乐!以及一些碎碎念 与朋友联机游玩 Minecraft 优化站点速度之见解 搭建 Hypixel 加速 IP 部署 VuePress v1 文档到 Vercel Hello World! 白嫖党福利——Backblaze B2 免费 10GB 对象存储 打开 Windows 传递优化,利人利己! 优化 Windows Search 搜索,加快搜索速度! 搭建一个属于你自己的 Minecraft 服务器 如何诊断 Minecraft Java 版客户端中的错误 手把手教你如何搭建属于自己的 Hexo 博客 关于我讲了节物理课这件事 我的 Minecraft 服务器 —— CakeMC Cake Launcher 开发日志 神级内存清理软件———Mem Reduct
通过自定义主题重写我的博客
Big_Cake · 2024-07-10 · via 晓雨杂记

我的老天,感谢 Restent 的馈赠(不是

起因 ​

其实 Yun 主题挺好看的,功能也很丰富。唯一可惜的一点是 PageSpeed Insights 的评分太低了。

Restent 最近又用 Nuxt 自己车了一套博客给自己用,然后他将之前所写的 Valaxy 主题开源了出来。

一开始我为了统一风格,想基于他的这个“半成品”自己写一个 Material You 风格的主题,但由于 Vite 配置文件的一些问题不得不作罢,使用 Bulma 来进行重写。

目前基本上大多数东西都能正常用,但是标签、分类浏览 Restent 当时没有做,我也没有写出来,就先放缓了。

实践 ​

本地引用主题 ​

首先我把他的主题文件夹下载了下来,放在项目根目录下,然后进行了链接:

bash

pnpm install ./valaxy-theme-custom

这样一来这个文件夹应该就可以像 npm 包一样进行使用了。

移除不需要的东西 ​

Restent 使用了 Roboto 和 JetBrains Mono 作为显示字体,但我个人不是很喜欢这两个字体和 Bulma 在一起搭配的效果,于是删了。

diff

<script setup lang="ts">
import { useHead } from '@unhead/vue';
import { onMounted } from 'vue';

useHead({
    link: [
        {
            rel: 'canonical',
            href: 'https://blog.gxres.net'
        },
        {
            rel: 'preconnect',
            href: 'https://i.yecdn.com'
        }
    ]
})

onMounted(async () => {
    const script = document.createElement('script')
    script.async = true
    script.src = 'https://umami.slirv.vip/script.js'
    script.dataset.websiteId = 'a1102895-db17-4356-8d49-355b6fef337e'
    document.head.appendChild(script)

-   await import('@fontsource/roboto/400.css')
-   await import('@fontsource/jetbrains-mono/400.css')
})
</script>

重新排版 ​

原本的主题中,Restent 设计的是双栏布局,而我在使用 Yun 时已经习惯了三栏式布局,于是将样式调整为了三栏,并且适当增大了宽度。

1720596051888.webp

方法也很简单,把 layouts 文件夹中那几个布局模板改下,加一个 Grid column 就好了。

适配其他页面 ​

在我尝试搬友链页面的时候,发现什么东西都没用,只有渲染过的 Markdown。

然后翻了翻文档,看到了这个:

1720596284917.webp

Restent 自己的主题原本是只写了一个 <RouterView /> 在里面的,于是我将其他 layout 随便复制了一个过来改了一下,得到了下面的效果:

1720596852329.webp

因为实在是懒得再用 Bulma 写一个友链组件了,于是直接上了 Yun 的,只是改了一下不让它再去用衬线字体了。

修改组件样式与逻辑 ​

文章目录 ​

文章目录组件里的样式是 Restent 自己写的,他后来也跟我说本来就不该像当时那样写。

我后来自己改成了这样:

1720596997454.webp

捐赠 ​

一开始捐赠组件中的捐赠途径 Restent 写死了,我后来自己改了一下,使得它可以通过 siteConfig 自定义了。

1720598521438.webp

vue

<template>
  <div class="card" v-if="siteConfig.sponsor.enable">
    <div class="card-content">
      <div class="content">
        <p class="text-center">喜欢这篇文章?能不能考虑一下投喂我(x</p>
        <div class="grid grid-cols-4 justify-items-center">
          <a
            target="_blank"
            v-for="methods in siteConfig.sponsor.methods"
            :style="{ backgroundColor: methods.color }"
            class="button is-link"
            :href="methods.url"
          >
            <span :class="methods.icon"></span>&nbsp;{{ methods.name }}
          </a>
        </div>
      </div>
    </div>
  </div>
</template>
<script setup lang="ts">
import { useSiteConfig } from "valaxy";

const siteConfig = useSiteConfig();
</script>

页脚 ​

页脚的话,我加了一个一言和修改说明。因为备案了,所以还得再加一个备案显示。最后的效果是这样的:

1720599200979.webp

返回顶部 ​

我一直觉得此前用 <a href="#" /> 的方式实现返回页面顶部不是特别舒服,因为没有平滑滚动,于是自己写了一点 JavaScript。现在感觉很舒服了。

添加新的组件 ​

由于变成三栏式了,所以两边显得有些空空的,于是瞎写了一堆可有可无的组件加上去充个数。

我个人认为目录应该位于侧栏最顶部,于是正好把这玩意儿放在了右栏的最上方。至于右栏剩下的地方,则通过全站友情链接来充数了。

顶栏的空间没办法放太多页面导航链接,就又糊了一个组件放其他的页面链接。

颜色主题切换 ​

我的老天爷,一打开 Navbar.vue,我人都傻了:怎么一大堆 document 啊?!仔细一看,哦,原来是 Restent 实现深浅色模式切换的代码。

不得不说用是能用,但是有点问题:Artalk 似乎不会随系统切换自己的颜色模式。

没关系,Valaxy 有个全局状态 isDarktoggleDark(),短短几行 JS 就可以直接实现很不错的切换了。

vue

<template>
  <button class="navbar-item" @click="toggleDark" aria-label="Switch theme">
    <div class="icon text-xl i-ri-contrast-2-line" />
  </button>
</template>
<script lang="ts" setup>
import { useAppStore } from "valaxy";

const appStore = useAppStore();
const toggleDark = () => appStore.toggleDark();
</script>

差不多也就是这些了,看看之后会怎么样吧。