项目地址:https://class.laoqian303.top源码仓库:https://github.com/uqayiyufog07-eng/graduation-website
缘起:毕业那天,我想留下点不一样的东西毕业典礼结束的那个傍晚,教室黑板上还留着没擦干净的名字,窗外是六月潮湿的风。我突然意识到:六年同窗,就要散落在不同的城市、不同的学校、不同的命运里了。
拍照?太轻。写同学录?太旧。
我想做一座永远在线的小屋——把每一位老师的笑、每一位同学的脸、每一段藏在抽屉里的悄悄话,都装进去,让它们在互联网的边缘节点上,被风一吹,就一直亮着。
于是,「永远的六班」诞生了:https://class.laoqian303.top
我希望它是什么样子毕业纪念网站这件事,圈子里已有不少前辈做过。但我不想做一个 PPT 式的页面:照片一摆、名字一列、寄语一抄,结束。
我希望它——
有温度:每一张照片都能”活”过来,每一句悄悄话都像真的被装进信封里寄出;
有科技感:典礼当晚,大屏能被全班的祝福”刷屏”,弹幕一条条划过,像新年烟花;
能永久保留:哪怕十年后大家各奔东西,只要域名续费 ...
背景博客用 Hexo + 安知鱼主题搭建,部署在 Cloudflare Pages。安知鱼主题内置了音乐馆功能,左下角有一个悬浮播放器,还有一个独立的 /music/ 页面。音乐数据通过 MetingJS 从网易云拉取。
问题是:所有歌都只有 45 秒试听片段。
原因是 MetingJS 默认走的是第三方公共 API,匿名请求网易云,VIP / 版权歌曲只给试听。要听完整版,就得带上你自己的网易云会员 Cookie 去请求 API。
但 Cookie 是账号登录凭证,绝不能写进前端代码或 Git 仓库。
方案在 Cloudflare Pages 项目根目录放一个 Pages Function,做一层”中间人”:
12浏览器 → /api/meting (Pages Function) → 网易云 API ↑ Cookie 从环境变量读取,不暴露给前端
MetingJS 请求同源的 /api/meting,不跨域
Cookie 只存在 Cloudflare Pages 的加密机密里,代码和构建产物里都看不到
音频 URL 自动从 H ...
一、Markdown 基础语法1.1 标题与段落用 # 的数量表示一到六级标题;段落之间空一行;行尾加两个空格或回车两次换行。
1.2 文字样式斜体 或 斜体,加粗,粗斜体,删除线,行内代码,==高亮==(部分渲染器支持)。
引用块。可以嵌套:
二级引用。
1.3 列表
无序列表项 A
无序列表项 B
缩进两个空格是子项
有序列表第一项
有序列表第二项
未完成的任务
已完成的任务
1.4 链接与图片文字链接,图片:
1
1.5 表格
功能
语法
说明
左对齐
:---
默认
居中
:---:
居中
右对齐
---:
右对齐
1.6 代码块123// 三个反引号 + 语言标识,安知鱼会自动开启代码高亮const hello = () => console.log("Hello Hexo");hello();
1hexo clean && hexo g && hexo s
二、 ...
本文整理自 Hexo 官方文档 与 安知鱼主题官方文档,结合自己的踩坑经历,梳理出一条从「装环境」到「发文章」的完整路径。这也是本博客的第一篇文章。
写在前面:Hexo 与安知鱼是什么关系?Hexo 是一个快速、简洁且高效的静态博客框架:用 Markdown 写文章,几秒内就能生成静态网页。它的核心逻辑包括文章、页面、分类、标签、主题渲染等。
安知鱼(AnZhiYu) 则是基于 Hexo 的一款「简单、美丽」的主题,由 安知鱼 开发维护,改自知名的 hexo-theme-butterfly。
官方文档有一句话值得默念三遍:
使用这个主题之前,你应该明白它是一个 Hexo 主题,它的基本逻辑离不开 Hexo。关于如何新建分类、如何新建标签这些问题,应该在使用之前就从互联网或官方文档了解详情。
也就是说:先有 Hexo,后有主题。Hexo 管「怎么写、怎么组织内容」,主题只管「长什么样」。理解了这一点,后面 90% 的问题都能自己定位。
安知鱼的主题特性非常丰富,挑几个日常写作最关心的:
页面组件懒加载(pjax)、图片懒加载
多种代码高亮方案、LaTeX 数学公式、mermai ...
