Hexo 很好,但我要离开它了

Hexo 是我目前用过的最好的,为静态博客而生的框架。Hexo 到今年为止,也陪伴了我 4 年的时间。

如果你需要的是快速建立一个自己的博客或者日志,并且就这么单纯的使用它,它几乎是你的最佳选择。

最初,moe.jimmy0w0.me 的定位是区别于 blog.jimmy0w0.me 的,Moe 更偏向于每日一更的日常记录;所以,当初在选择框架的时候我毫不犹豫地选择了 Hexo,因为我只需要使用 Markdown 编写这一切,然后发布即可。

Hexo 有着不可否认的便捷性和一定的拓展性,有很多不错的插件和主题通过安装和简单配置就可以使用。但,Hexo 的缺点也是显而易见的,那就是自由度。当然,我必须要说这并不是 Hexo 的问题,而是我个人的需求发生了变化。

我曾经有试着拓展 Hexo 的功能性,诸如 hexo-generator-restfulhexo-generator-json-content 这些插件可以生成出 JSON,以供其他的功能需求。例如我在多年前就使用这个方法开发出了可以与 Moe 同步的小程序。

但是这终究还是不完美,随便就能指出这种方案带来的劣势。比如无法对 JSON 进行分页和字段筛选,导致请求一次就必须一股脑地将所有的数据(包括文章内容)都返回回来。就截止到这篇文章,请求一次的大小近乎要达到 1 MB。

不仅如此,Hexo 无法提供一些 API。我无法或者难以使用外部的 API 或者 Markdown 以外的数据来生成页面;或者我也无法灵活的使用各种不同的 Web 前端的技术 (但是说的你好像很会 Web 前端的开发一样 :\ )

再加上新的需求不断涌现,例如随时随地的编辑和保存,部分内容的国际化处理,一些漫展/角色返图的展示,我甚至还考虑过让一篇文章的构成可以由不同的控件构成,而不是单纯的文字。这些需求让我开始反思,是否要在 Hexo 的基础上继续折腾。

我的最终答案就是:不

我需要前后端分离,但又方便我进行内容创作的东西。我希望可以自行部署,并且有完善的备份方案作为保护措施。最终,我选择了 Strapi

Strapi 提供了后端和一个方便数据模型和内容管理的后台,支持国际化,具有插件 API,更好的是,它有更加完善的账号的鉴权和权限管理。除此之外,它还能用 RESTful (是真的 RESTful) 和 GraphQL 两种方式来提供 API。

我并没有使用独立的数据库 (例如 Postgres 或者 MySQL),而是作为文件存在的 SQLite,因为它可以被 Git 一同进行版本管理并被上传到 GitHub 当中。如果出现了任何问题,Git 作为分布式的版本管理,可以随时的让我进行可靠的版本回滚或者数据恢复。

现在,我终于拥有了一套完善的数据模型和非常好的编辑体验

image.png

并且依靠 Cloudflare 的 Zero Trust 服务,我还可以将我的后台给完全保护起来,免受未经授权的用户访问到。

image.png

而关于前端则是完全自由的状态。因为后端仅提供 API,前端可以以任何形式展现了。对于 Web 来说,目前的想法是使用 Next.JS 来重塑新的页面。总而言之,这是对于 2019 年以来,一次新的尝试与开始。

但这,也意味着,Moe 将要关闭了…

jimmy0w0.me 这个域名在这几年以来几乎是为 Moe 所服务的,但当新的网站上线后,这一切都会被改变。jimmy0w0.me 将会重新被使用。具备有新的 Web 技术,譬如像是 PWA,AMP (For Google Only),更好的搜索功能 (预计由 Algolia 提供) 以及更好的 SEO

以上画饼我尽可能实现好吧

新的网站将会继承,重写或者填坑在 Moe 中开的一些系列,使其变得质量更高,也更完善。同时,这篇文章也将寓意着 Moe 即将变成归档状态,不再更新与维护。

谢谢这些年,你们,身边的人,以及 Hexo 陪我度过的这些时光

2023/9/25 8:12 AM