从 0 自己搓了一个博客程序:AmiaBlog

一直以来,我就对现有的博客程序的自定义化流程不满意。我从 Hexo 迁移到 WordPress,又从 WordPress 迁移到 Typecho,最后得以窥视到一点事实:深度自定义化的成本,远大于自己来编写一切的成本。

抱着简洁主义和实用主义的理想,我再次开了一个新坑: AmiaBlog。

说实话,写这个博客系统的过程中,没有什么困难的地方。我只需要按照自己的设计美学,将一切一点点搭建起来,组成一个完整的系统。
项目也没有花太久时间。从开始开发到第一个可用版本(也是我正在使用的版本),只花了 3 天不到的时间。


博客整体使用 FastAPI + Jinja2 + MDUIv2 的技术栈,兼顾性能、兼容性和美观性。

得益于 MDUI V2 的 Dynamic Theme 系统,只需要输入自己喜欢的颜色,全套基于这个颜色的配色方案就会自动生成。我对 Highlight.js 的默认样式文件进行了一些修改,使高亮后的代码也跟随配色主题变动。

AmiaBlog 还使用了单文件配置系统,这代表一切都可以通过修改仅仅一个文件来实现深度自定义化。比如,下面是我自己博客的配置文件:

{
  "site_settings": {
    "title": "0x24a's Blog",
    "description": "0x24a 的个人博客,包含软件开发、音声合成等领域的相关内容。",
    "keywords": "0x24a, 586, vocalsynth, vocaloid, software engineering",
    "site_url": "https://blog.24a.fun",
    "color_scheme": "DDAACC",
    "hljs_languages": [
      "python",
      "javascript",
      "rust",
      "markdown",
      "xml"
    ]
  },
  "copyright": {
    "name": "CC-BY-SA 4.0",
    "refer": "https://creativecommons.org/licenses/by-sa/4.0/deed.zh-hans"
  },
  "site_language": "zh-CN",
  "search_method": "jieba",
  "cloudflare_analytics_token": "4abc217a10ea4729932d88aa68c8277f"
}

同时,AmiaBlog 完全使用 Markdown 作为写作系统。打开你喜欢的任何编辑器,使用 YAML 写下文章的相关信息,随后使用 Markdown 撰写文章正文,这对我来说是最舒适的写作体验了。为了获得一个更舒适的写作环境,让我更多地记录下、并表达出自己的想法,就算是自己从 0 造一个轮子,都完全值得。


主要功能

  • 完全的 Markdown 写作支持
  • 内建高性能搜索算法
  • 基于 MDUI V2 的响应式前端
  • 自动暗色/亮色模式
  • 仅需提供主色的自动配色方案生成器
  • 多语言支持
  • RSS Feed 支持

一些预览图

主色:DDAACC | 亮色模式 | 桌面端

主色:DDAACC | 亮色模式 | 移动端

主色:DDAACC | 暗色模式 | 桌面端

主色:DDAACC | 暗色模式 | 移动端

主色:39C5BB | 亮色模式 | 桌面端

主色:39C5BB | 亮色模式 | 移动端

主色:39C5BB | 暗色模式 | 桌面端

主色:39C5BB | 暗色模式 | 移动端


日后,在持续更新 AmiaBlog 的同时,我也会试着多多更新自己的博客,请多多关注!

最后,放上 AmiaBlog 的仓库链接,欢迎做出贡献,或是自己部署一个玩玩:GitHub - 0x24a/AmiaBlog: A simple, lightweight blog system built with FastAPI & MDUIv2. · GitHub

27 个赞

很简约,是我喜欢的风格, :xhj006:

1 个赞

我也喜欢简约风格,这就是为什么我选用了 Material You

1 个赞

好强 就喜欢这种简约的

1 个赞

厉害 :+1:

1 个赞

大佬厉害,赞一个

最新博客相关帖子多起来了 这是我的博客 https://wcowin.work/ 欢迎互访啊

1 个赞

厉害 :xhj003:

看上去不错

加油,我自己也在写一个类似的项目,但是和你这个也不是一个类型。我想的是真正的自研,纯静态

挺好的

厉害

我将项目进行了相对优雅的解耦合,只需要稍作修改就可以变为一个静态博客生成器。

:xhj006:

这个简约的博客不错哦!博客本来就是用来写的 不需要太花里胡哨的东西

好知道

支持下

好贴

学习一下

挺好看的,怎么部署的呀?