跳到主要内容

Wails v2 发布

·阅读时间 8 分钟
Lea Anthony

它来了!

今天标志着 Wails v2 的发布。距第一个 v2 alpha 版本发布已有 18 个月,距第一个 beta 版本发布也有约一年。我真心地感谢参与这个项目演变的每个人。

之所以花那么长时间才发布的原因之一,是因为我们想在正式将其称为 v2 之前,先确定一个完备性定义。事实是,永远没有一个完美的时间来标记版本发布,总会有待解决的问题或需要挤进来的“最后一个”功能。但是,标记不完美的重大版本发布确实可以为项目的使用者提供一些稳定性,以及为开发人员提供一些重置。

这个版本的发布超出了我的预期。我希望它能带给您和我们开发它一样多的快乐。

什么是 Wails?

如果您不熟悉 Wails,它是一个可以让 Go 程序员使用熟悉的 Web 技术为他们的 Go 程序提供丰富的前端的项目。它是 Electron 的轻量级 Go 替代方案。有关更多信息,请访问 官方网站

有什么新功能?

v2 版本是该项目的重大飞跃,解决了 v1 的许多痛点。如果您还没有阅读过关于 macOSWindowsLinux 的 Beta 版本的任何博文,那么我建议您阅读一下,因为它们更详细地介绍了所有重大更改。简而言之

  • 适用于 Windows 的 Webview2 组件,支持现代 Web 标准和调试功能。
  • 深色/浅色主题 + 自定义主题 在 Windows 上。
  • Windows 现在没有 CGO 要求。
  • 开箱即用地支持 Svelte、Vue、React、Preact、Lit 和 Vanilla 项目模板。
  • Vite 集成,为您的应用程序提供热重载开发环境。
  • 原生应用程序 菜单对话框
  • 适用于 WindowsmacOS 的原生窗口半透明效果。支持 Mica 和 Acrylic 背景。
  • 轻松为 Windows 部署生成 NSIS 安装程序
  • 丰富的 运行时库,提供用于窗口操作、事件、对话框、菜单和日志记录的实用程序方法。
  • 支持使用 garble 对您的应用程序进行 混淆
  • 支持使用 UPX 压缩您的应用程序。
  • 自动将 Go 结构生成 TypeScript。更多信息 在此
  • 任何平台都不需要与您的应用程序一起发布额外的库或 DLL。
  • 不需要捆绑前端资产。只需像开发任何其他 Web 应用程序一样开发您的应用程序。

致谢与感谢

实现 v2 版本是一个巨大的努力。从初始的 alpha 版本到今天的发布,共有 89 位贡献者贡献了大约 2200 次提交,还有许多其他人提供了翻译、测试、反馈以及讨论论坛和问题跟踪器上的帮助。我非常感谢你们每一个人。我还想特别感谢所有为项目提供指导、建议和反馈的项目赞助商。你们所做的一切都非常感谢。

我特别想提一下几个人。

首先,要向 @stffabi 表示衷心的感谢,他贡献了许多我们都从中受益的功能,并且在许多问题上提供了很多支持。他提供了一些关键功能,例如外部开发服务器支持,它通过允许我们连接到 Vite 的强大功能来改变了我们的开发模式。可以公平地说,没有他的 巨大贡献,Wails v2 不会如此令人兴奋。@stffabi,非常感谢你!

我还想向 @misitebao 表示衷心的感谢,他一直辛勤地维护着网站,还提供了中文翻译,管理着 Crowdin 以及帮助新译员快速上手。这是一项极其重要的工作,我非常感谢他为此付出的所有时间和精力!你很棒!

最后,但并非最不重要的一点,要向 Mat Ryer 表示衷心的感谢,他在 v2 开发过程中提供了建议和支持。我们一起使用 v2 的早期 Alpha 版本编写 xBar,这有助于塑造 v2 的方向,并让我了解早期版本中的一些设计缺陷。我很高兴地宣布,从今天开始,我们将开始将 xBar 移植到 Wails v2,它将成为该项目的旗舰应用程序。干杯,Mat!

经验教训

在实现 v2 版本的过程中,我们吸取了一些经验教训,这些教训将影响未来发展。

更小、更快、更集中的发布

在开发 v2 的过程中,许多功能和错误修复都是根据需要开发的。这导致了更长的发布周期,更难调试。展望未来,我们将更频繁地发布版本,其中包含更少的功能。发布将包括更新文档以及彻底的测试。希望这些更小、更快、更集中的发布能导致更少的回归和更高质量的文档。

鼓励参与

在开始这个项目时,我想立即帮助遇到问题的每一个人。问题是“个人”的,我希望尽快解决它们。这是不可持续的,最终会损害项目的长期发展。展望未来,我将给予人们更多空间来参与回答问题和对问题进行分类。最好是获得一些工具来帮助我们做到这一点,因此如果您有任何建议,请加入讨论 在此

学会说不

参与开源项目的人越多,对额外功能的请求就越多,这些功能可能对大多数人有用,也可能没有用。这些功能需要初始的时间来开发和调试,并且从那时起就会产生持续的维护成本。我自己在这方面最内疚,往往想“沸腾大海”,而不是提供最小的可行功能。展望未来,我们需要更多地说“不”,以添加核心功能,并将我们的精力集中在赋予开发人员自己提供这些功能的能力上。我们正在认真研究插件来应对这种情况。这将允许任何人根据自己的需要扩展项目,以及提供一种轻松的方式来为项目做出贡献。

展望未来

我们已经计划在下一个重大开发周期中为 Wails 添加许多核心功能。路线图充满了有趣的想法,我很想开始着手研究这些想法。其中一个重大需求是多窗口支持。这很棘手,要做好,我们可能需要考虑提供替代 API,因为当前的 API 没有为此而设计。根据一些初步的想法和反馈,我认为您会喜欢我们正在考虑的方向。

我个人非常兴奋地想要让 Wails 应用程序在移动设备上运行。我们已经有一个演示项目,它展示了在 Android 上运行 Wails 应用程序是可能的,因此我真的很想探索我们在这个方向上能取得什么成就!

最后一点我想提一下的是功能一致性。长期以来,我们的核心原则是不在项目中添加任何没有针对所有平台提供完全跨平台支持的功能。虽然到目前为止,这已经(基本上)可以实现,但它确实阻碍了项目的发布新功能。展望未来,我们将采用略微不同的方法:任何不能立即在所有平台上发布的新功能将在实验配置或 API 下发布。这允许特定平台上的早期使用者试用该功能并提供反馈,这些反馈将用于最终设计该功能。当然,这意味着在它完全由所有可以支持它的平台支持之前,API 稳定性没有保证,但至少它将解除开发的阻碍。

结语

我对我们能够在 V2 版本中取得的成就感到非常自豪。看到人们已经能够使用迄今为止的 beta 版本构建的内容令人惊叹。像 VarlySurgeOctober 这样的高质量应用程序。我鼓励您查看它们。

这个版本的发布是通过许多贡献者的辛勤工作实现的。虽然它是免费下载和使用的,但它并非无成本的。毫无疑问,这个项目已经花费了相当大的成本。这不仅是我和每个贡献者的时间,还有每个人离开朋友和家人的成本。这就是为什么我非常感谢每一秒钟致力于使这个项目成为现实。我们拥有的贡献者越多,这种努力就可以分散得越多,我们在一起就能取得的成就就越多。我想鼓励大家选择一件您可以贡献的事情,无论是确认某人的错误,建议解决方案,更改文档还是帮助有需要的人。所有这些小事情都有巨大的影响!如果您也加入了实现 v3 版本的故事,那就太好了。

尽情享受!

Lea

PS:如果您或您的公司发现 Wails 有用,请考虑 赞助该项目。谢谢!