我很高兴终于宣布 Wails v2 现在可以用于 Linux 的 beta 版了!有点讽刺的是,v2 的最初实验是在 Linux 上进行的,但最终它成为了最后一个发布版本。话虽如此,我们今天拥有的 v2 与那些最初的实验非常不同。所以,事不宜迟,让我们来回顾一下新功能。
新功能
许多人要求原生菜单支持。Wails 终于满足了您的需求。应用程序菜单现在可用,并支持大多数原生菜单功能。这包括标准菜单项、复选框、单选组、子菜单和分隔符。
在 v1 中,有大量要求能够对窗口本身有更多控制权。我很高兴地宣布,为此专门添加了新的运行时 API。它功能丰富,支持多显示器配置。还有一个改进的对话框 API:现在,您可以使用现代、原生的对话框,并具有丰富的配置来满足您所有对话框的需求。
无需捆绑资产
v1 的一大痛点是需要将整个应用程序压缩到单个 JS 和 CSS 文件中。我很高兴地宣布,对于 v2,无论以何种方式、形状或形式,都无需捆绑资产。想要加载本地图像?使用带有本地 src 路径的 <img>
标签。想要使用酷炫的字体?将其复制并将其路径添加到您的 CSS 中。
哇,这听起来像是一个 Web 服务器...
是的,它工作起来就像一个 Web 服务器,只是它不是。
那么我如何包含我的资产呢?
您只需将包含所有资产的单个 embed.FS
传递到您的应用程序配置中。它们甚至不需要位于顶级目录中 - Wails 会为您解决的。
新的开发体验
现在,资产无需捆绑,这使得开发体验焕然一新。新的 wails dev
命令将构建并运行您的应用程序,但它不是使用 embed.FS
中的资产,而是直接从磁盘加载它们。
它还提供以下附加功能
- 热重载 - 对前端资产的任何更改都将触发应用程序前端的自动重新加载
- 自动重建 - 对 Go 代码的任何更改都将重建并重新启动您的应用程序
除此之外,Web 服务器将在端口 34115 上启动。这将为连接到它的任何浏览器提供您的应用程序。所有连接的 Web 浏览器都将响应系统事件,例如资产更改时的热重载。
在 Go 中,我们习惯于在应用程序中处理结构体。将结构体发送到我们的前端并将其用作应用程序中的状态通常很有用。在 v1 中,这是一个非常手动化的过程,对开发人员来说也是一种负担。我很高兴地宣布,在 v2 中,在开发模式下运行的任何应用程序都将自动为所有绑定方法的输入或输出参数生成 TypeScript 模型。这使得数据模型能够在两个世界之间无缝地交换。
除此之外,另一个 JS 模块是动态生成的,它包装了所有绑定方法。这为您的方法提供了 JSDoc,在您的 IDE 中提供代码完成和提示。当您在包装 Go 代码的自动生成模块中按下 Tab 键时,自动导入数据模型真是太酷了!
远程模板

让应用程序快速运行一直是 Wails 项目的关键目标。当我们发布时,我们尝试涵盖当时许多现代框架:react、vue 和 angular。前端开发的世界非常固执己见,发展迅速,难以跟上!因此,我们发现我们的基础模板很快过时了,这造成了维护方面的麻烦。这也意味着我们没有为最新和最棒的技术堆栈提供酷炫的现代模板。
在 v2 中,我想通过赋予您自己创建和托管模板的能力来赋予社区力量,而不是依赖 Wails 项目。因此,现在您可以使用社区支持的模板创建项目!我希望这能激励开发人员创建一个充满活力的项目模板生态系统。我对开发人员社区可以创造什么感到非常兴奋!
交叉编译到 Windows
因为 Wails v2 for Windows 是纯 Go 编写的,所以您可以在没有 Docker 的情况下针对 Windows 构建进行编译。

总结
正如我在 Windows 发布说明中所说,Wails v2 代表了该项目的新基础。这个版本的目的是获得对新方法的反馈,并在完全发布之前消除任何错误。您的意见将非常受欢迎!请将任何反馈意见发送到 v2 Beta 讨论版。
Linux 很难 支持。我们预计 beta 版中会有一些怪癖。请通过提交详细的错误报告来帮助我们帮助您!
最后,我要特别感谢所有 项目赞助商,他们的支持在幕后以多种方式推动了该项目。
我期待着看到人们在这个项目激动人心的下一阶段使用 Wails 创建什么!
Lea。
PS:v2 的发布马上就要来了!
PPS:如果您或您的公司发现 Wails 有用,请考虑 赞助该项目。谢谢!