
我很高兴终于可以宣布:Wails v2 现已推出 Linux 测试版!颇具讽刺意味的是,最初的 v2 实验就是在 Linux 上进行的,它却成了最后发布的版本。话虽如此,如今的 v2 与最初的实验版本已大不相同。闲话少叙,下面来看看这些新功能:
新功能

许多用户都希望获得原生菜单支持。Wails 终于满足了这一需求。现在可以使用应用程序菜单,并且支持大多数原生菜单功能,包括标准菜单项、复选框、单选按钮组、子菜单和分隔符。
在 v1 中,许多用户希望能更精细地控制窗口本身。我很高兴地宣布,现在已有专为此用途设计的新运行时 API。它功能丰富,并支持多显示器配置。此外,对话框 API 也得到了改进:现在,你可以使用现代化的原生对话框,并通过丰富的配置满足各种对话框需求。
无需捆绑资源
v1 的一大痛点是必须将整个应用程序压缩成单个 JS 文件和单个 CSS 文件。我很高兴地宣布,在 v2 中完全不再要求以任何形式捆绑资源。想加载本地图像?使用带有本地 src 路径的<../../../assets/blog-images>标签即可。想使用一款很酷的字体?将它复制进来,然后在 CSS 中添加其路径即可。
哇,听起来就像 Web 服务器……
没错,它的工作方式就像 Web 服务器,但它并不是 Web 服务器。
那么,我该如何加入自己的资源?
只需将一个包含所有资源的embed.FS传入应用程序配置即可。这些资源甚至不必位于顶层目录中——Wails 会自动为你处理。
全新的开发体验
现在资源不再需要捆绑,因此带来了全新的开发体验。新的wails dev命令会构建并运行应用程序,但它不会使用embed.FS中的资源,而是直接从磁盘加载资源。
它还提供以下附加功能:
- 热重载——前端资源发生任何变化时,应用程序前端都会自动重新加载
- 自动重新构建——Go 代码发生任何变化时,应用程序都会重新构建并重新启动
此外,还会在端口34115上启动一个 Web 服务器。任何连接到该服务器的浏览器都可以访问你的应用程序。所有已连接的 Web 浏览器都会响应系统事件,例如资源变更时的热重载。
使用 Go 开发应用程序时,我们经常处理结构体。我们往往需要将结构体发送到前端,并将其用作应用程序的状态。在 v1 中,这一过程高度依赖手动操作,给开发者带来了一些负担。我很高兴地宣布,在 v2 中,以开发模式运行任何应用程序时,都会为绑定方法用作输入或输出参数的所有结构体自动生成 TypeScript 模型。这使两个环境之间的数据模型能够无缝互通。
此外,还会动态生成另一个 JS 模块,用于封装所有绑定方法。它会为这些方法提供 JSDoc,从而让 IDE 能够提供代码补全和提示。在封装 Go 代码的自动生成模块中按 Tab 键时,数据模型会自动导入,这真的很酷!
远程模板

快速启动并运行应用程序一直是 Wails 项目的核心目标。项目刚推出时,我们试图涵盖当时的许多现代框架:react、vue 和 angular。前端开发领域观点纷呈、变化迅速,很难持续紧跟其发展!因此,我们发现基础模板很快就会过时,维护起来令人头疼。这也意味着,我们没有适用于最新优秀技术栈的现代化模板。
在 v2 中,我希望让社区拥有更大的自主权,使大家能够自行创建和托管模板,而不必依赖 Wails 项目。因此,现在你可以使用由社区支持的模板创建项目!我希望这能激励开发者打造一个充满活力的项目模板生态系统。我非常期待看到开发者社区能够创造出什么!
交叉编译至 Windows
由于 Windows 版 Wails v2 完全使用 Go 编写,因此无需 docker 即可面向 Windows 进行构建。

总结
正如我在 Windows 发行说明中所说,Wails v2 为项目奠定了新的基础。此次发布旨在收集大家对新方案的反馈,并在正式发布前解决所有错误。非常欢迎你的意见!请将任何反馈提交到v2 测试版讨论区。
Linux 的支持很难实现。我们预计测试版会存在一些特殊问题。请提交详细的错误报告,帮助我们更好地帮助你!
最后,我要特别感谢所有项目赞助者,他们的支持在幕后以多种方式推动着项目发展。
项目即将迈入令人兴奋的新阶段,我期待看到大家使用 Wails 构建出怎样的作品!
Lea。
附言:v2 距离正式发布已经不远了!
再附言:如果你或你的公司觉得 Wails 很有用,请考虑赞助本项目。谢谢!