很荣幸能收到然哥的邀请,共同完善HexoHub项目。

一个基于 Electron + Next.js 构建的Hexo博客管理桌面应用程序,提供图形化界面来替代传统的命令行操作

正如前文所述,HexoHUB使用的是Electron + Next.js的架构,但是由于Electron应用打包出来的体积非常大(大概安装后286M,安装包85M左右),根据一通优化,成功把安装后的体积缩小到254M左右,但还是非常大。

查询了一下主要体积都是Electron里面的浏览器框架太大了,于是我们一通商量,能不能再把Electron删掉呢?

我想到了Tauri,这是一个跨端的、和Electron的框架,果不其然,在我们之后的新框架选型中,我和然哥都一致认为他相当优秀。

这是我们打的第一个包,由我在原先的Electron版本,迁移到Rust的后端完成的基于Tauri版本。

好吧,我们都小小的震惊了一把,那时候感觉似乎Tauri也挺简单的……

吃到了甜头,我们正式发起了Tauri分支,在往后的半周里,我们有反反复复发现了好多BUG……

尤其是Tauri的文件拖曳、本地文件的获取、本地的文件操作、联网操作、Shell操作,都和Electron的不一样,而且但凡是加载程序内部以外的东西,都要提前申请Permission,我们苦不堪言……

为了避免Tauri版本出问题,我们依然保留了Electron,设计了多平台的打包自动工作流。

Tauri的文件拖曳是一个需要注意的点,默认其实Tauri是会拦截你的文件拖曳的……

具体的,你需要在tauri.conf.json中,在windows项关掉它的拦截行为,不然你的Html是收不到拖曳信号的。

文件操作、联网操作、Shell操作都需要用到专门的组建来完成。还有Tauri的环境是不能直接以 file:// 形式载入本地资源,需要用convertFileSrc转换,etc...
相关文章

不过我们还是很成功的完成了大部分的测试,相对于之前的v2.6.0版本,有以下更新:

新架构

新增Tauri框架,实现Electron+Tauri双选择
包体积大幅减小,支持Win/Mac/Linux
服务器渲染预览方式、本地壁纸文件读取、本地文件复制、联网操作、Shell操作、进程残留修复问题在Tauri上重构
新功能
图片拖拽自动复制到资源文件夹
部署失败详细提示,点击跳转日志页面
权限错误自动修复
更新日志支持Markdown渲染
更新页面显示当前环境
安装程序上会对Win下的node.js环境自动检测并提示
跨平台优化
Windows中文在部分机器的乱码问题
多平台多架构的路径/时间显示
代码和工作流优化
统一API接口
清理重复代码
自动化发布流程

其中,图片拖拽自动复制在双框架上的实现,由我负责了Tauri端,然哥完成了Electron端。Tauri端的大部分代码是我这边完成(毕竟我这边更熟悉Tauri一点),然后很打一方面的测试是然哥完成的~

有点累哇,成就感满满~