本项目不是 WordPress,也不是 Typecho,今天正式把它开源:项目叫 Jxe · 轻博客(仓库名 moments),而你正在浏览的这个网站,就是它最完整的线上演示。

Jxe · 轻博客首页:瀑布流时间线,图文、视频、音乐混排

开源地址:<https://github.com/mliae/moments>

它是个什么样的站?

我想要的,是一个介于「发动态」和「写博客」之间的东西:

  • 想随手记一句话、发一张照片、转一首歌的时候,用说说——打开就能发,支持九图、视频和音乐,瀑布流刷起来像翻一本日记;
  • 想认真写点东西的时候,用文章——Markdown 写作,封面、摘要、评论一应俱全;
  • 照片拍得多了,就丢进相册;
  • 再加上关于我、友链、搜索、RSS,一个人日常表达需要的东西,基本都齐了。

它不追求大而全,只想安安静静地、快速地把内容呈现出来。

文章页:Markdown 排版、封面图与评论区

功能一览

用下来觉得最值的几个设计:

  • 说说时间线:图文、最多九条视频、网易云音乐混排;图片懒加载并自动生成缩略图,手机原图哪怕二十兆,首页也只加载百 KB 级的缩略版
  • 视频播放:MP4、HLS 直链、B站和 YouTube 链接都能发;iPhone 拍的 HEVC 视频会在浏览器里自动转成通用的 H.264,不用自己动手转码
  • 评论区:表情包面板、图片评论、楼中楼回复;评论里 @ 一下 AI 助手「小J」,它会基于 Workers AI 自动回你一条,回复失败还会自动切换备用模型
  • 图片体验:全站统一的灯箱放大、缩略图和 R2 直连,相册、说说和正文同一套处理
  • 写作辅助:全文搜索(快捷键 Ctrl+K,文章、说说、友链分组展示)、RSS 订阅、sitemap,以及文章发布后自动推送到 IndexNow 和百度
  • 后台管理:自定义秘密入口路径、职责清晰的分类设置页;站点域名和图床域名都能在后台动态切换,一处修改全站生效,不写死在代码里
  • 访问统计:内置轻量统计,地区、来源、热门页面一目了然,不依赖第三方统计脚本
  • 关于页与友链:时间线、数字统计、赞助码;友链支持自动抓取站点信息、分类和审核流程

相册页:网格布局,点击即可灯箱放大

技术架构

整个项目刻意保持简单:一个 Cloudflare Worker 就是整站。

  • 运行时:Cloudflare Workers + Hono,服务端渲染首屏(边缘缓存加持下 TTFB 基本是毫秒级),前端是原生 HTML/CSS/JS,没有重型框架,加载快、耗电低
  • 数据库:Cloudflare D1(SQLite),存文章、说说、评论和全部配置
  • 文件存储:Cloudflare R2,零出口流量费;给 R2 绑上自定义域名就能走直连省 Worker 请求,留空则自动回退 Worker 代理,后台一个输入框随时切换
  • AI 能力:Workers AI 驱动评论机器人,无需额外服务器
  • 边缘缓存:随机背景图等外部资源经边缘拉取后缓存进 R2,既稳定又不依赖第三方图床

个人博客量级的访问,整套架构完全落在 Cloudflare 免费额度之内。

一分钟部署你自己的版本

仓库 README 里放了「Deploy to Cloudflare」按钮:

  1. 点按钮,授权 GitHub 和 Cloudflare;
  2. 平台自动创建 D1 数据库、R2 存储桶,构建并部署;
  3. 第一次打开后台,设置一个管理员密码就能开始写;
  4. 想用自己的域名,在 Cloudflare 后台绑一下即可。

不需要买服务器,不需要装 Node,也不需要手动跑数据库迁移——首次访问自动建表,已有的老库则原样保留。

为什么自己写

博客程序很多,但我想要的东西一直凑不齐:要有随手发的轻松感,也要有长文的仪式感;数据要完全在自己手里;页面要快、手机上看着要舒服。

与其在各种程序之间来回迁移、缝缝补补,不如照着自己的习惯写一个。写了几个月,功能随着真实使用一个个长出来——这篇文章里提到的每个特性,几乎都是自己用着用着觉得「这里该有一个」才加上的。

现在它对我来说已经足够顺手,也希望对你有用。欢迎 Star、提 Issue,或者直接部署一个,开始记录自己的生活。

开源地址:<https://github.com/mliae/moments>