博客焕新

118936196_p0.jpg

已经不记得这是第几次重新开始搓博客了

自已之前的博客用的是静态站点生成器那一套东西

好处就是不需要服务器,随便找个静态站点托管就能搞定

坏处也很明显,就是由于自己频繁的杀系统,一些不重要的/云端有的数据我都不会保存,以至于绝大部分时间我的本地其实根本没有博客的仓库 ,要写新博客的话还要克隆下来,安装环境 ,光是想想就很没动力~

出于同样的原因,我现在更加倾向于使用能够即开即用的工具完成所有工作,所以我从 Obsidian 迁到了 Outline ,从飞书(之前的日记主要存在飞书里,但是客户端打开真的太太太慢了,特别是一篇文档超过一万字之后)迁到了 Memos。

前面几版噶掉的原因很简单,后端用了Rust,主要是由于前后端分离导致双端进行数据交换的格式需要随着开发不断变动,虽然有着一系列框架如 gRPC 来减轻接口变动带来的负担,但客观上它们有引入了另外一个或多个需要变动的文件,更改一个接口可能需要在3个 文件中修改…久而久之真的会失去耐心,时间都花在了改接口上。其实就是摆烂了

这次再次萌生搓博客的想法是因为突然想试 吃一下强大的 Bun ,随后便找到了 ElysiaJS 这个强大的基于类型推断的 Web 框架,这里引用官网描述(翻译后):

Eden 是一个 类似 RPC 的客户端,仅使用 TypeScript 的类型推断(而不是代码生成)即可连接 Elysia 端到端类型安全。

允许您轻松同步客户端和服务器类型,体积不到 2KB。

如此一来,服务端与客户端之间的通信就如同在同一个项目之间单纯的函数调用一样,服务端修改了返回类型,客户端的调用返回的结果变量立马就能观察到类型变更,同时配合 Drizzle ORM 进行数据库查询的类型约束,整个项目 便处于一个类型严格的安全系统。

这次重新写博客从一开始便是打算趁着这个契机慢慢将自己的一些内容整合到一块,最基础的是博客,在此基础上还有日记,笔记,日程表,监控面板等等;不过在此之前肯定还是得先把最基础的博客文章功能搓出来,因此前期的主要工作便是完成文章,标签,友链等主要内容的增删查改以及权限管理,目前使用的是Github OAuth作为账号登录系统,同时第一个登录注册的用户为博主,拥有完整的增删查改权限,其后的所有用户计划是只有回复的权限(目前是还没有实现回复,表已经建好了已经实现了),当前已经完成的有:

  1. 文章的写作,列表、阅读与修改(删忘记写了改天加上),同时支持设置别名以支持直接通过别名 访问,如关于页面其实是一篇设置了别名为 about 且关闭了在文章列表中列出的普通文章
  2. 友链的增删查改(前端暂时只实现了博主手动添加友链功能,计划有其他用户填写并申请友链,博主接受后展示的功能)
  3. 不同屏幕大小的适配
  4. 定期检查友链,更新友链健康状态
  5. 支持了回复和 Webhook 通知 迁移到 Cloudflare Workers 之后似乎访问不了我国内的服务器了
  6. 将后端迁移至 Cloudflare Workers + D1 进行托管
  7. 支持上传图片至 R2

待后续整理完善后会将整个仓库公开

2024.5.26 更新:

仓库现已公开:https://github.com/openRin/Rin

评论

3 条留言
  1. 真厉害

  2. 好强

  3. 路过,deepseek推荐的,看了下果然很不错啊,有机会F过来玩玩