
它来了!
今天标志着 Wails v2 的发布。自第一个 v2 alpha 版本发布以来已经过去了大约 18 个月,自第一个 beta 版本发布以来已经过去了大约一年。我真心地感谢所有参与该项目发展的人员。
之所以花那么长时间的一部分原因是,我们希望在正式将其称为 v2 之前达到某种完整性定义。事实上,从未有完美的发布时间——总有待解决的问题或“再加一个”功能要塞进去。然而,标记一个不完美的重大版本所做的事情是,为项目用户提供一定的稳定性,以及为开发人员提供一定程度的重置。
这个版本比我预期的还要多。我希望它能带给你和我开发它时一样的乐趣。
Wails 是什么?
如果你不熟悉 Wails,它是一个项目,它使 Go 程序员能够使用熟悉的 Web 技术为他们的 Go 程序提供丰富的前端。它是 Electron 的轻量级 Go 替代方案。更多信息可以在 官方网站 上找到。
有什么新功能?
v2 版本是该项目向前迈出的巨大一步,解决了 v1 的许多痛点。如果你没有阅读过关于 macOS、Windows 或 Linux 的 Beta 版本的任何博文,那么我鼓励你阅读一下,因为它详细介绍了所有主要变化。概括起来说
- 适用于 Windows 的 Webview2 组件,支持现代 Web 标准和调试功能。
- 深色/浅色主题 + 自定义主题 在 Windows 上。
- Windows 现在没有 CGO 要求。
- 开箱即用地支持 Svelte、Vue、React、Preact、Lit 和 Vanilla 项目模板。
- Vite 集成,为你的应用程序提供热重载开发环境。
- 原生应用程序 菜单 和 对话框。
- 适用于 Windows 和 macOS 的原生窗口半透明效果。支持 Mica 和 Acrylic 背景。
- 轻松为 Windows 部署生成 NSIS 安装程序。
- 一个丰富的 运行时库,提供用于窗口操作、事件处理、对话框、菜单和日志记录的实用程序方法。
- 支持使用 garble 对你的应用程序进行 混淆。
- 支持使用 UPX 压缩你的应用程序。
- Go 结构体的自动 TypeScript 生成。更多信息 在此。
- 你的应用程序不需要额外的库或 DLL 文件。适用于任何平台。
- 不需要捆绑前端资产。只需像任何其他 Web 应用程序一样开发你的应用程序。
致谢和感谢
达到 v2 是一个巨大的努力。从最初的 alpha 版到今天的发布,共有 89 位贡献者提交了约 2.2K 次代码提交,还有很多贡献者提供了翻译、测试、反馈和帮助,包括讨论论坛和问题跟踪器。我对你们每一个人都深表谢意。我还想特别感谢所有为该项目提供指导、建议和反馈的项目赞助商。你们所做的一切都非常感谢。
有几个人我想特别提一下
首先,非常感谢 @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 版本构建什么,真是太棒了。像 Varly、Surge 和 October 这样的高质量应用程序。我鼓励你去看看它们。
这个版本是通过许多贡献者的辛勤努力实现的。虽然它是免费下载和使用的,但这并不意味着它没有成本。毫无疑问,这个项目付出了相当大的成本。这不仅是我和每个贡献者的时间,还包括每个人从朋友和家人那里缺席的成本。这就是为什么我非常感谢所有献身于让这个项目成为现实的每一秒。我们拥有的贡献者越多,这项努力就能越分散,我们就能一起取得更多成就。我鼓励你们每个人都选择一件你能做出的贡献,无论是确认某个人的错误,建议修复方法,进行文档更改,还是帮助有需要的人。所有这些微不足道的事情都具有巨大的影响!如果你们也参与到 v3 的故事中,那将会是多么棒!
尽情享受!
‐Lea
PS:如果你们或你们的公司觉得 Wails 有用,请考虑 赞助该项目。谢谢!