在沉浸于 Wails 3 开发 Mole 客户端的过程中,我不禁想起了我在 2023 年 11 月完成的一个小项目——mp-qrcode-gen

虽然现在微信小程序后台已经集成了生成小程序码的功能,但在 2023 年,开发者想要快速、批量或者自定义参数生成小程序码,往往需要自己写脚本。于是,我用 Rust 编写了这款极致轻量的桌面工具。

Mole 流程图

一、 为什么在 2023 年做这个工具?

当时,很多运营人员和开发者在准备线下物料(如海报)时,面临一个痛点:

  1. 接口调用门槛:微信官方提供的是 API 接口,非技术人员无法直接使用。
  2. 参数复杂:小程序码分为“受限”和“不受限”两种,参数限制各异,手动拼凑 URL 极易出错。
  3. 批量需求:线下场景往往需要针对不同页面、不同场景值生成大量图片,网页端操作效率低下。

为了解决这些问题,我选择了当时还算冷门的 Rust 语言进行开发,追求极致的性能与体积。

二、 技术选型:Rust + native-windows-gui

在那个时期,我并没有选择 Electron 这种庞然大物,而是选择了:

  • Rust: 保证了极高的运行效率和内存安全。
  • native-windows-gui (NWG): 这是一个非常纯粹的 Windows 原生 GUI 库。它不包含浏览器内核,直接调用 Windows API,生成的 .exe 文件体积非常小。

三、 核心功能拆解

工具界面直观,配置完 AppIDAppSecret 后,主要提供两种模式:

1. 数量受限模式 (API A/B)

  • 特点:支持输入完整的、带有超长 URL 参数的页面路径。
  • 场景:适用于对码量要求不高(总计 10 万个以内),但需要精准携带复杂参数的场景。

2. 数量不受限模式 (API C)

  • 特点:页面路径较短,但支持独立的 Scene(场景值)字段。
  • 场景:这是线下物料最常用的模式,可以无限次生成,通过场景值来区分不同的线下投放点。

3. 本地化保存

点击生成后,工具会直接调用微信接口并处理返回的二进制流,将其保存为本地图片文件。无需打开浏览器,所见即所得。

四、 独立开发的意义:领先于官方

虽然几个月后,微信官方后台也逐步完善了类似的功能,但 mp-qrcode-gen 的意义在于:在需求未被完全满足的真空期,个人开发者可以用技术手段快速提供解决方案。

即便在今天看来,这个工具的交互逻辑依然清晰:

  • AppID 鉴权 -> Token 自动管理 -> 参数校验 -> 二进制流转图片

五、 项目地址与开源

这款工具目前依然在 Gitee 上开源。对于想要学习 Rust 桌面端开发 或者 微信 API 调用逻辑 的朋友,这是一个非常简洁的入门参考。

六、 结语

从 2023 年的 Rust 原生 GUI,到 2026 年的 Wails 3 + Go,技术栈在变,但我对于“解决具体痛点”的开发热情没有变。每一个小工具的诞生,都是对当时业务场景的一次深刻理解。

下一个篇章,我将继续介绍我的其他独立开发项目,敬请期待。