Transcript
00:00:00这是 Paik,一个命令行工具,只需一条命令
00:00:05就能将任何网站变为原生桌面应用。它基于 Rust 构建,因此生成的应用大小仅为 5MB 左右,
00:00:10相比之下,Electron 捆绑了整个 Chrome 内核,体积庞大。你甚至可以注入自定义
00:00:15CSS 和 JavaScript,添加托盘图标,并更改标题栏样式,所有这些都不需要
00:00:20编写一行 Rust 代码。但为什么要用它而不是其他类似工具呢?如果它是基于 Rust 构建的,
00:00:25为什么 Paik 要求我安装 PNPM 或 NPM?我其实不想知道,
00:00:31但订阅频道,让我们一探究竟。Paik 由来自中国的独立产品工程师 TW93 于 2022 年创建,
00:00:40他还是超火的 Mac 优化工具 Mole 的开发者,我其实已经用了很久了。
00:00:45但 Paik 的想法非常有道理,因为仔细想想,
00:00:49像 YouTube Music、Gmail 和 Instagram 都没有官方原生应用。它们只存在于
00:00:55浏览器标签页里。如果你想要浏览器的全部功能,这没问题,但如果你想要一个
00:00:59性能更好、且拥有独立程序坞图标以便区分的网站应用,
00:01:04那么拥有一个独立的应用就非常实用了。这就是 Paik 的用武之地,它比 Electron 优秀得多,
00:01:09因为它基于 Tauri 2 构建,直接调用系统的原生网页视图,从而使应用
00:01:14更小、更快,内存占用更少,类似于 Electro、Bun 或 Vercel 的 Zero Native 的工作原理,
00:01:19稍后我会在视频中详细介绍。但 TW93 在 Tauri 2 之上编写的自定义代码
00:01:24大约有 1800 行 Rust 代码,处理窗口管理、原生菜单
00:01:30和 JavaScript 注入等功能。只需运行一个命令,Paik 就能搞定一切。事实上,
00:01:35让我们试着用 Paik 把我的胶片模拟项目变成一个独立应用。在安装完
00:01:40Paik CLI 后,如果你用过 Mole,会发现它看起来非常相似,而且
00:01:45它没有太多标志,我觉得这是件好事。在我的项目服务器运行时,我可以运行带有
00:01:50URL 和我想要的应用名称的 Paik 命令。现在输入回车,它会自动获取图标并开始
00:01:55创建应用的过程,大约需要 5 到 10 分钟。完成后,它会创建一个
00:02:00DNG 文件,大小可以在这里看到是 4.3MB。点击它,这就是我们的应用,
00:02:05我们可以通过把它拖进应用程序文件夹来安装。虽然看起来没抓取到图标,但这
00:02:10没关系。现在打开应用,可以看到它立即生效了,图标也出现在了程序坞中。
00:02:14我可以选择视频,一切运作正常。如果查看活动监视器,
00:02:19我们可以发现我们的应用只占用了 61MB 内存,相比之下 ARC 浏览器占用了大量资源。
00:02:24如果我们看看应用大小,它只有 55MB,而像 Slack 这样的 Electron 应用
00:02:30体积高达 310MB。但正如你早些时候看到的,Paik 有一些非常有趣的选项。例如,
00:02:35我可以用 debug 标志构建同一个应用来访问开发工具。我还可以
00:02:40使用 hide title bar 标志来编辑状态栏,使其感觉更像原生应用,它会提供一个
00:02:46无框标题栏。但这应用显然不是为无框设计的。幸运的是,Paik 提供了
00:02:51一个选项来修复这个问题,而无需编辑应用源码。我可以写一些自定义 CSS
00:02:56并用 inject 标志将其注入到应用中,这在顶部增加了内边距,但也意味着
00:03:01底部有更多的滚动空间。我们可以使用 show system tray 标志,在系统托盘显示图标,
00:03:06允许我们显示和隐藏应用。我们甚至可以注入 JavaScript 以及 CSS。
00:03:12但目前看来,你还无法编辑 Paik 默认提供的菜单项。
00:03:17而且 Paik 只对运行中的 URL 有效。所以如果我关闭服务器再尝试打开应用,
00:03:23它只会显示空白屏幕。但平心而论,Paik 本来就不是为本地应用设计的。我测试过
00:03:28一个 YouTube Music 应用,通过一条命令运行,效果出奇的好。它甚至可以离线工作,
00:03:33因为 YouTube Music 网站本身就是这样运作的。所以我一直在把它当作我的主力音乐播放器,
00:03:38但它基本上不是你所拥有的桌面应用的工具,因为 Paik 是基于实时
00:03:42URL 封装的,除非你使用 use local file 选项(我是做完这个视频后才发现的),否则不会捆绑你的代码。
00:03:48我也觉得它构建得并不完善。听我说,我安装 Paik 时
00:03:53使用的是 BUN 而不是 PNPM 或 NPM,但它内部需要其中之一来设置 Tauri 构建环境。
00:04:00而我的 PNPM 版本比它要求的还要新,这意味着它拒绝构建并
00:04:05安装我想要的应用。所以我不得不使用 Claude Code 来修改 Paik 的源码才能让它正常工作。
00:04:11我确实为此提交了一个 issue,但如果 Paik 提供编译好的二进制文件,这一切本可以避免,
00:04:15这也是使用像 ElectroBUN 或 ZeroNative 之类工具的优势,
00:04:20因为 ElectroBUN 在网页视图背后提供了一个真正的 BUN 运行时,意味着你可以运行后端
00:04:25逻辑,而 ZeroNative 更进一步,提供了一个可以直接调用 C 库的完整 Zig shell。
00:04:31所以 Paik 是封装实时网站的最快方式,但如果你有其他需求,
00:04:36最好还是选择其他工具。
Community Posts
No posts yet. Be the first to write about this video!
Write about this video