800 字
4 分钟
你好,世界
2026-06-02
2026-10-24

为什么写博客?#

在这个信息爆炸的时代,写博客似乎有点”复古”。但我觉得,写博客有几个不可替代的价值:

  1. 整理思路 — 把想法写下来的过程,就是理清思路的过程。很多我以为自己懂了的东西,动笔之后才发现漏洞百出。
  2. 知识沉淀 — 写过的东西比看过的东西记得更牢。半年后翻回来,还能顺着当时的记录把环境重新跑起来。
  3. 帮助他人 — 你踩过的坑,别人可能正在踩。搜索解决方案时命中一篇详细的踩坑记录,那种感激是发自内心的。

所以就有了这个站——鸢尾之语,写代码,也写生活。

这个博客是怎么搭起来的?#

整站基于 Astro 构建,在 Fuwari 模板的基础上做了大量定制。选择 Astro 的原因:

  • 快 — 内容在构建期渲染成纯静态页面,服务器只需要 nginx 托管,2 核 2G 的小机器也毫无压力
  • 灵活 — 需要交互的地方(评论、动态流)单独用 Svelte 组件做岛屿式水合
  • 简单 — Markdown 写文章,Git 管理内容,其他时间都可以用来写字

在模板之外,自己动手加了这些东西:

功能实现方式
评论系统Node.js 原生 HTTP 服务,支持回复、点赞、图片和语音
动态(朋友圈)首页动态流 + 独立详情页,数据存在服务器 JSON 文件里
后台管理网页版管理台,Gitee/GitHub OAuth 登录,双栏 Markdown 编辑器
一键部署后台点一下,服务器自动 git pull + 构建

部署在一台阿里云 2 核 2G 的 ECS 上,nginx 反代静态页面和两个 API 服务,HTTPS 证书用 certbot 自动续期。域名 theywh.me。

上线前后踩过的坑#

说是”静态博客”,真要跑起来还是有不少坑,捡三个印象最深的:

  1. Swup 页面缓存导致的”永远加载中”。站内跳转用了 Swup 做无刷新切换,但它缓存了旧页面,文章详情页一直转圈。最后的解法是给详情页链接加 data-no-swup,强制走完整加载——牺牲一点丝滑,换取稳定。

  2. 动态图片 404。nginx 的静态文件正则 location 把 /api/uploads/ 的图片请求截胡了,直接去磁盘找文件当然找不到。把 API 上传目录的正则规则挪到静态规则前面就好了。nginx 的 location 匹配顺序是个经典暗坑。

  3. 一个未定义函数干崩整个列表。后台动态列表渲染时调用了一个 timeAgo 函数,结果它根本没定义,JS 一报错整个列表直接空白。这种”半成品代码上线”的问题,写个小的冒烟测试就能提前发现。

接下来的计划#

  • 搭好博客,写下第一篇文章
  • 写几篇技术笔记(Flink 流处理、图像去雨、机械臂仿真都写了)
  • 记录一些读书心得
  • 分享生活中的小发现

希望这个博客能一直写下去。🚀

你好,世界
https://theywh.me/posts/hello-world/
作者
鸢尾花
发布于
2026-06-02
许可协议
CC BY-NC-SA 4.0