---
slug: wails-v2-beta-for-mac
title: 适用于 Mac 平台的 Wails v2 测试版
authors:
  - name: Lea Anthony
    title: Wails 项目作者
    url: https://github.com/leaanthony
    image_url: https://github.com/leaanthony.png
tags: [wails, v2]
---

<div class="text--center">
  <img
    src="/img/wails-mac.png"
    width="60%"
    style={{
      "box-shadow":
        "rgb(255 255 255 / 20%) 0px 4px 8px 0px, rgb(104 104 104) 0px 6px 20px 0px",
    }}
  />
</div>
<br />

今天是 Mac 版 Wails v2 的第一个测试版！花了很长时间才走到这一步，我希望今天的版本会给你一些相当有用的东西。为了达到这一点，经历了许多曲折，我希望在您的帮助下，消除问题并为最终的 v2 版本完善 Mac 端口。

你的意思是这还没有准备好生产？对于您的用例，它可能已经准备就绪，但仍然存在许多已知问题，因此请密切关注此[项目板](https://github.com/wailsapp/wails/projects/7)，如果您愿意做出贡献，我们将非常欢迎您！

那么 Mac 版 Wails v2 与 v1 有哪些新变化？提示：它与 Windows Beta 非常相似 😉

### 新特性

<div class="text--center">
  <img
    src="/img/wails-menus-mac.png"
    width="80%"
    style={{
      "box-shadow":
        "rgb(255 255 255 / 20%) 0px 4px 8px 0px, rgb(104 104 104) 0px 6px 20px 0px",
    }}
  />
</div>
<br />

有很多对原生菜单支持的需求。Wails 终于让您满意了。应用程序菜单现已可用，并且包括对大多数本原生菜单功能的支持。这包括标准菜单项、复选框、单选组、子菜单和分隔符。

在 v1 中有大量的需求，要求能够更好地控制窗口本身。我很高兴地宣布，有专门用于此的新运行时 API。它功能丰富，支持多显示器配置。还有一个改进的对话框 API：现在，您可以拥有具有丰富配置的现代原生对话框，以满足您所有的对话框需求。

### Mac 特定选项

除了普通的应用程序选项，Wails v2 for Mac 还带来了一些 Mac 附加功能：

- 让你的窗口变得时髦和半透明，就像所有非常快速的应用程序一样！
- 高度可定制的标题栏
- 我们支持应用程序的 NSAppearance 选项
- 自动创建“关于”菜单的简单配置

### 无需打包资源

v1 的一个巨大痛点是需要将整个应用程序压缩为单个 JS 和 CSS 文件。我很高兴地宣布，对于 v2，不需要以任何形式打包资源。
想要加载本地图片？使用带有本地`src`路径的`<img>`标签。想使用很酷的字体吗？复制它并在你的 CSS 中添加它的路径。

> 哇，这听起来像一个网络服务器......

是的，它就像一个网络服务器一样工作，但它不是。

> 那么我如何包含我的资源？

您只需将`embed.FS`包含所有资产的单个文件传递到您的应用程序配置中。他们甚至不需要在顶级目录中——Wails 会为你解决这个问题。

### 全新的开发体验

现在不需要打包资源，它启用了全新的开发体验。新`wails dev`命令将构建并运行您的应用程序，但它不使用`embed.FS`中的资源，而是直接从磁盘加载它们。

它还提供了附加功能：

- 热重载 - 对前端资产的任何更改都将触发并自动重载应用程序前端
- 自动重新构建 - 对 Go 代码的任何更改都将重新构建并重新启动您的应用程序

除此之外，网络服务器将在端口 34115 上启动。这将为您的应用程序提供连接到它的任何浏览器。所有连接的 Web 浏览器都会响应系统事件，例如资产更改时的热重载。

在 Go 中，我们习惯于在应用程序中处理结构。将结构发送到我们的前端并将它们用作我们应用程序中的状态通常很有用。在 v1 中，这是一个非常手动的过程，对开发人员来说有点负担。
我很高兴地宣布，在 v2 中，任何在开发模式下运行的应用程序都将自动为所有结构生成 Typescript 模型，这些结构是绑定方法的输入或输出参数。这实现了两个世界之间数据模型的无缝交换。

除此之外，还会动态生成另一个 JS 模块来包装您的所有绑定方法。这为您的方法提供了 JSDoc，在您的 IDE 中提供代码完成和提示。当您在自动生成的包含 Go 代码的模块中点击 Tab 时自动导入数据模型，这真的很酷！

### 远程模板

<div class="text--center">
  <img
    src="/img/remote-mac.png"
    width="80%"
    style={{
      "box-shadow":
        "rgb(255 255 255 / 20%) 0px 4px 8px 0px, rgb(104 104 104) 0px 6px 20px 0px",
    }}
  />
</div>
<br />

让应用程序快速启动并运行一直是 Wails 项目的一个关键目标。当我们推出时，我们试图涵盖当时的很多现代框架：react、vue 和 angular。前端开发的世界非常自以为是，快速发展且难以掌握！
结果，我们发现我们的基本模板很快就过时了，这导致了维护问题。这也意味着我们没有用于最新和最伟大技术堆栈的酷炫现代模板。

在 v2 中，我希望通过让您能够自己创建和托管模板来增强社区的能力，而不是依赖于 Wails 项目。所以现在您可以使用社区支持的模板创建项目！
我希望这将激励开发人员创建一个充满活力的项目模板生态系统。我对我们的开发者社区可以创造的东西感到非常兴奋！

### 原生 M1 支持

感谢[Mat Ryer](https://github.com/matryer/)的惊人支持，Wails 项目现在支持 M1 原生构建：

<div class="text--center">
  <img
    src="/img/build-darwin-arm.png"
    width="80%"
    style={{
      "box-shadow":
        "rgb(255 255 255 / 20%) 0px 4px 8px 0px, rgb(104 104 104) 0px 6px 20px 0px",
    }}
  />
</div>
<br />

您也可以指定`darwin/amd64`为目标：

<div class="text--center">
  <img
    src="/img/build-darwin-amd.png"
    width="80%"
    style={{
      "box-shadow":
        "rgb(255 255 255 / 20%) 0px 4px 8px 0px, rgb(104 104 104) 0px 6px 20px 0px",
    }}
  />
</div>
<br />

哦，我差点忘了....你也可以做`darwin/universal`....😉

<div class="text--center">
  <img
    src="/img/build-darwin-universal.png"
    width="80%"
    style={{
      "box-shadow":
        "rgb(255 255 255 / 20%) 0px 4px 8px 0px, rgb(104 104 104) 0px 6px 20px 0px",
    }}
  />
</div>
<br />

### 交叉编译到 Windows

因为 Windows 的 Wails v2 是纯 Go，所以你可以在没有 docker 的情况下针对 Windows 构建。

<div class="text--center">
  <img
    src="/img/build-cross-windows.png"
    width="80%"
    style={{
      "box-shadow":
        "rgb(255 255 255 / 20%) 0px 4px 8px 0px, rgb(104 104 104) 0px 6px 20px 0px",
    }}
  />
</div>
<br />

### WKWebView 渲染器

V1 依赖于 WebView（现已弃用）组件。V2 使用最新的 WKWebKit 组件，所以期待 Apple 的最新和最棒的组件。

### 结语

正如我在 Windows 发行说明中所说，Wails v2 代表了该项目的新起点。此版本的目的是获得有关新方式的反馈，并在完整版本发布之前解决所有错误。非常欢迎您的意见！请将任何反馈发送到[v2 测试版](https://github.com/wailsapp/wails/discussions/828)讨论板。

最后，我还要特别感谢包括[JetBrains](https://www.jetbrains.com?from=Wails)在内的所有项目[赞助商](/docs/credits#sponsors)，他们的幕后支持以多种方式推动了该项目。

我期待看到在项目的下一个激动人心的阶段人们用 Wails 构建什么！

Lea.

PS: Linux 用户们，你们将是下一个！

PPS：如果您或您的公司发现 Wails 有用，可以考虑[赞助该项目](https://github.com/sponsors/leaanthony)。谢谢！
