
今天标志着 Wails v2 Mac Beta 版的首次发布!到达这一步花费了相当长的时间,我希望今天的发布会给您带来一些合理实用的东西。要到达这一步,我们经历了多次曲折,我希望借助您的帮助,消除皱纹,为最终的 v2 版本发布完善 Mac 移植版本。
你是说这还不适合生产环境?对于您的用例来说,它可能已经可以使用了,但仍然存在一些已知问题,请关注这个项目看板,如果您想贡献,我们非常欢迎!
那么 Wails v2 for Mac 与 v1 相比有什么新功能?提示:它与 Windows Beta 版非常相似 😉
新功能

有很多人要求提供原生菜单支持。Wails 终于满足了您的需求。应用程序菜单现已推出,并支持大多数原生菜单功能。这包括标准菜单项、复选框、单选按钮组、子菜单和分隔符。
在 v1 中,有大量请求要求能够更好地控制窗口本身。我很高兴地宣布,专门为此增加了新的运行时 API。它功能丰富,支持多显示器配置。还改进了对话框 API:现在,您可以使用现代的原生对话框和丰富的配置来满足您所有的对话框需求。
Mac 特定选项
除了普通的应用程序选项之外,Wails v2 for Mac 还带来了一些 Mac 附加功能
- 让您的窗口像所有漂亮的 Swift 应用程序一样酷炫,半透明!
- 高度可定制的标题栏
- 我们支持应用程序的 NSAppearance 选项
- 简单的配置来自动创建“关于”菜单
无需捆绑资产
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 项目。因此,现在您可以使用社区支持的模板创建项目!我希望这能激发开发人员创建一个充满活力的项目模板生态系统。我对我们的开发人员社区能够创造的东西感到非常兴奋!
原生 M1 支持
感谢Mat Ryer 的大力支持,Wails 项目现在支持 M1 原生构建

您还可以将darwin/amd64
指定为目标

哦,差点忘了……您还可以使用darwin/universal
…… 😉

交叉编译到 Windows
由于 Wails v2 for Windows 是纯 Go,因此您可以在没有 docker 的情况下将 Windows 构建作为目标。

WKWebView 渲染器
V1 依赖于 (现在已弃用) 的 WebView 组件。V2 使用最新的 WKWebKit 组件,因此您可以期待 Apple 的最新和最棒的功能。
总结
正如我在 Windows 版本说明中所说的那样,Wails v2 代表着该项目的新基础。此版本的目的是收集有关新方法的反馈,并在全面发布之前消除任何错误。您的意见将非常受欢迎!请将任何反馈发送到v2 Beta 讨论板。
最后,我要特别感谢所有项目赞助商,包括JetBrains,他们的支持以各种方式推动了幕后的项目发展。
我期待看到人们在该项目的下一个激动人心的阶段使用 Wails 构建什么!
Lea。
PS:Linux 用户,你们是下一个!
PPS:如果您或您的公司发现 Wails 有用,请考虑赞助该项目。谢谢!