Mog Odyssey 2.0 错误修复与项目重构 - Stage 5 Issue
GitHub · Mog Stage 5: https://github.com/mogland/core/issues/661 (opens in a new tab)
[Icon] 全新的图标 by @Jinhwan Kim
有关这个图标的版权,你可以前往「常见问题」查看
[Core] 自定义发布活动与返回接口 by @wibus-wee
通过定义配置文件,你将可以通过定义发布活动来调度你自己的服务,比如说:
render: # controller --> {API}/render/*
- path: /events # {API}/render/events
method: get
handler: events.get # 发布活动
- path: /events/{id} # {API}/render/events/{id}
method: get
handler: events.get.id
- path: /events
method: post
handler: events.post
这样,你就可以通过 GET /events
来获取全部活动,通过 GET /events/{id}
来获取指定活动,通过 POST /events
来发布活动。
[Core] 自定义定时任务支持 by @wibus-wee
定时任务是一个非常重要的功能,它可以让你在指定的时间执行指定的任务,比如说,你可以在每天的 00:00:00 发送一封访客信息邮件给自己,或者在每天的 00:00:00 清理一次数据库。
于是我们做了一个较为简单的定时任务系统,它具有以下功能
- 不同的任务类型(访问 URL,广播事件)
- 及其自由的任务操作参数
- 支持任务执行进行后续操作
- 收集任务错误日志
暂时来说较为简陋,在后续阶段我们会继续完善它。
[Core] 其他新增功能 by @wibus-wee
- 数据备份恢复支持
- 静态资源管理服务支持
- 友链服务支持获取全部状态的友链数据
- 在无密码注册用户的情况下自动生成临时密码
你可以看到,我们本次的功能增强都是围绕着自定义进行的,我们希望用户可以通过自定义来实现更多的功能,而不是依赖于我们的功能。
[Console] 使用 @vercel/swr 请求后端数据 by @wibus-wee
- 重构几乎所有触发的请求
- 重构几乎所有的 Hooks,减少明面上的 useEffect 狂魔
- 重构几乎所有页面的请求钩子
- 将重复组件抽象为
ActionButton
组件
另外,我们还使用新的 Toast 组件以替换原有有缺陷的通知组件
[Console] 控制台支持刷新版本缓存 by @wibus-wee
我们内置控制台的资源获取策略是:优先使用缓存,如果缓存不存在则请求远端资源,这样做的好处是可以减少请求次数,但是也会导致一些问题,比如:缓存所储存的版本过期,但是我们的控制台并不会主动刷新缓存,这就导致了用户无法获取到最新的控制台。
为了解决这个问题,我们在 Dashboard 页面底部新增了一个刷新缓存的功能,它将会在用户点击刷新按钮时,刷新缓存,这样就可以解决这个问题了。
[Docs] 使用 Nextra 作为文档工具 by @wibus-wee
鉴于 Vitepress 的部分功能不足,我们决定使用 Nextra 作为文档工具,Nextra 是一个基于 Next.js 的文档工具,它的功能十分强大,我们将会在后续的版本中继续使用它。
然后抄了“一些” Nextra 官网的样式
[Dev] 渲染模块实现 by @wibus-wee
GitHub: @mogland-dev/mog-render-service (opens in a new tab)
我们之前曾说过要在 v2.0 中实现一个独立的渲染模块,它将会是一个独立的服务,它将会负责渲染 Markdown 和 Djot 文件,并且还支持文本宏,目前它已经可以正常工作了,但是我们还需要对它进行一些优化。
你可以在文章中输入如这样的内容:
[[ #blur($title) ]] was created on [[ #dayjs($created).format("MMMMDD, YYYY") ]].
接着渲染模块的文本宏模块将会将其渲染为:
<span class="text blur">My First Blog Post</span> was created on Sat, 25 Mar 2023 15:26:37 GMT.
这个 feature 的想法来自于 Mix space,但是这次我们稍微优化了算法,并更容易拓展功能。由于需要安全执行代码,因此效率依旧不算高。
[Core] 修复大量严重错误 by @wibus-wee & @MYXXTS
- 依赖安全性修复
- 错误指向评论详情接口
- 替换旧有缓存模块为新缓存模块
- 无法载入 ESM 模块
- 主题服务无法注入依赖
- 主题服务初次使用发生崩溃
- 同时激活多个主题发生错误