很简单的用 Rust 打包网页生成很小的 Mac App,底层使用 Tauri,支持微信读书、Twitter、RunCode、Witeboard、Flomo、Vercel 等,详细小白开发教程可见底部。
特征
小:相比传统的 Electron 套壳打包,大小要小将近 40 倍,一般不到 3M
快:Pake 的底层使用的 Rust Tauri 框架,性能体验较 JS 框架要轻快不少,内存小很多
特:不是单纯打包,实现了通用快捷键的透传、沉浸式的窗口、拖动、打包样式兼容
玩:只是一个很简单的小玩具,用 Rust 替代之前套壳网页老的思路玩法,PWA 也很好,友好交流勿喷
快捷键
- command + [:返回上一个页面
- command + ]:去下一个页面
- command + ↑:自动滚动到页面顶部
- command + ↓:自动滚动到页面底部
- command + r:刷新页面
- command + w:隐藏窗口,非退出
- command + -:缩小页面
- command + =:放大页面
- command + 0:重置页面缩放
此外还支持双击头部进行全屏切换,拖拽头部进行移动窗口,还有其他需求,欢迎提过来。
开发
开始前参考 Tauri 快速配置好环境,如果你想打包 Windows、Linux 系统的包,可以参考 Building 文档
// 安装依赖
npm i
// 调试
npm run dev
// 打包
npm run build
打新包
- 修改 src-tauri 目录下的 tauri.conf.json 中的 url、productName、icon、title、identifier 这 5 个字段,其中 icon 可以从 icons 目录选择一个,也可以去 macOSicons 下载符合产品名称的
- 关于窗口属性设置,可以在 tauri.conf.json 修改 windows 属性对应的 width/height,是否全屏 fullscreen,是否可以调整大小 resizable,假如你不好适配沉浸式头部,可以将 transparent 设置成 true 即可。
- npm run dev 本地调试看看效果,此外可以打开 main.rs 中两处注释 _devtools 进行容器调试
- npm run build 运行即可打包,假如有打开 devtools 模式,记得注释掉
高级
如何改写样式,如去掉原站广告、不想要的模块、甚至重新设计?
- 首先需要打开 devtools 调试模式,找到你需要修改的样式名称,先在 devtools 里面验证效果
- 找到 pake.js 中样式位置 style.innerhtml ,将需要覆盖的样式加上即可,有一些案例你可以模仿
- 正式打包前记得干掉 devtools 注释
如何注入 JS 的逻辑,比如实现事件监听,比如说键盘快捷键?
- 和上面1案例中准备工作一致
- 参考 pake.js 中事件监听 document.addEventListener,直接编写即可,这里更多是基础前端的技术
如何进行容器内的事件和 Pake 通信,比如说 Web 的拖拽、滚动、特殊点击传递啥的?
- 和上面1案例中准备工作一致
- 参考 pake.js 中通信代码 postMessage,写好事件监听,然后用 window.ipc.postMessage 将事件以及参数传递出来
- 然后参考容器接收事件 window.drag_window,自己处理即可,更多可以参考 tauri 以及 wry 的官方文档
链接: https://fly63.com/nav/3885