MoeHome 开源个人主页:纯静态、配置驱动、零运行时依赖
说实话,2026 年初我做了一个决定:把博客迁移到二级域名。
你知道为什么吗?两个原因:一是 Typecho 不再适合纯静态页面方案,而 Astro 在社区里越来越活跃:二是我想在迁移过程中,把那些陈旧的内容重新筛一遍。
但事情的发展,真的超出了我的预期。
意料之外的转折
迁移后的一个月,我观察到一些细微但让我警觉的变化:搜索我的品牌词时,首页既找不到新页面的索引,旧页面的索引也消失了。这是一个危险的信号。
我知道我面临一个抉择:必须趁早清空旧站点的页面。但我还没准备好新内容。不过,我已经有了清晰的规划。
定位:个人品牌的中心化入口
旧站点不再是一个“博客”,而是一个精心设计的数字名片——将分散的社交资产(GitHub、Twitter、博客、音乐品味)聚合为统一的品牌体验。

第一版规划:终端风格 + RSS+GitHub+链接导航
最初的想法很简单:
- 模拟终端风格作为个人介绍
- 通过 RSS 地址获取最新博客文章
- 展示 GitHub 个人项目
- 增加链接导航板块,用字体图标+卡片形式展示主流社交平台
但慢慢地,我觉得这个方案缺少点什么。
活人感的缺失
纯静态的主页展示,总觉得少了点「活人感」。
刚好,我一直在用 Memos 记录碎片化想法,体验真的很棒。为了达成品牌风格的一致性,我决定:通过 Memos 的 API 作为动态信息流,它支持标签筛选。
这样,主页就能实时展示我最近的思考和分享,不再是一潭死水。

双向沟通:留言板的诞生
有了”输出”,还需要”输入”。
我需要接受外界的「信号」,留言页面也就此诞生。筛选了几个开源评论系统后,最终选择集成 Waline 和 Artalk 两种方案,体验一致,切换自由。
为了让留言板与整体设计风格统一,我选择独立于项目的 UI 方案,打造了一个终端风格的弹幕交互界面。讲真,这是我觉得做得最厚重的一块。

技术选型:极简的坚持
这是一个 Vibe 练手的开源项目,整个项目的核心理念很简单:零运行时依赖,配置驱动,性能优先。
为什么选择纯静态?
- SEO 友好:构建生成纯静态 HTML,搜索引擎完美支持
- 性能极致:前端无框架,构建时自动压缩优化
- 部署简单:构建输出即插即用,支持任意静态托管
核心功能模块
| 功能 | 说明 |
|---|---|
| 🎨 配置驱动 | 所有内容在 config.js 中管理,无需修改代码 |
| 📰 RSS 聚合 | 构建时预获取博客文章,无运行时延迟 |
| 🐙 GitHub 集成 | 自动展示项目和贡献图(支持真实/随机数据) |
| 📝 Memos 动态 | 时间线布局,支持图片/音视频/Markdown |
| 💬 留言板 | 终端风格弹幕交互,支持 Waline/Artalk |
| 🎵 音乐播放器 | 支持 Meting API 和本地音乐 |
| 🎨 多主题配色 | 跟随系统/浅色/暗色,8 种精选配色方案 |
字体策略
采用“西文优先 + 系统回退”策略:
- 仅加载 JetBrains Mono 等宽字体(约 30KB)
- 中文使用系统字体,避免大文件加载
- 国内 Google Fonts 镜像加速
性能友好,加载速度快。
部署指南
环境准备
# 克隆项目git clone https://github.com/moewah/MoeHome.gitcd MoeHome
# 安装依赖npm install配置修改
编辑 src/config.js按需修改:
site: { name: 'YourName', tagline: '技术博主 / 开源爱好者 / AI 探索者', url: 'https://example.com',}
profile: { name: 'YourName', avatar: 'images/avatar.webp'}
links: [ { name: 'Blog', url: 'https://yourblog.com', icon: 'fa-solid fa-pen-nib', enabled: true }]构建 & 部署
# 构建npm run build
# 本地预览npx serve dist -p 8080# 访问 http://localhost:8080
# 部署:上传 dist/ 目录到任意静态托管写在最后
经过这一段时间的打磨,这个项目已经趋于完整。页面演示DEMO ->MoeWah
它或许不是功能最全的,也不是最炫酷的,但它符合我对”个人主页”的理解:简洁、快速、可控。
项目已开源:https://github.com/moewah/MoeHome,如果你喜欢这个项目,欢迎点个 Star ⭐️
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
喵斯基部落