---
sidebar_position: 1
---

# 简介

Wails 是一个可让您使用 Go 和 Web 技术编写桌面应用的项目。

将它看作为 Go 的快并且轻量的 Electron 替代品。 您可以使用 Go 的灵活性和强大功能，结合丰富的现代前端，轻松的构建应用程序。

### 功能

- 原生菜单、对话框、主题和半透明
- Windows、macOS 和 linux 支持
- 内置 Svelte、React 、Preact 、Vue、Lit 和 Vanilla JS 的模板
- 从 JavaScript 轻松调用 Go 方法
- 自动将 Go 结构体转换为 TypeScript 模块
- Windows 上不需要 CGO 或外部 DLL
- 使用 [Vite ](https://vitejs.dev/) 的实时开发模式
- 可以轻松创建、构建和打包应用的强大命令行工具
- 丰富的 [运行时库](/docs/reference/runtime/intro)
- 使用 Wails 构建的应用程序兼容 Apple & Microsoft 商店

这是 varly - 一个使用 Wails 编写的 MacOS 和 Windows 桌面应用。 它不仅看起来很强，它使用原生菜单和半透明 - 你希望从现代原生应用中得到的一切

```mdx-code-block
<p class="text--center">
    <img
      src={require("@site/static/img/showcase/varly2.webp").default}
      style={{ width: "75%", "max-width": "800px" }}
    />
</p>
```

### 快速启动模板

Wails 带有许多预配置的模板，可让您快速启动和运行应用程序。 有以下框架的模板：Svelte、React、Vue、Preact、Lit 和 Vanilla。 每个模板都有 JavaScript 和 TypeScript 版本。

### 原生元素

Wails 使用专门构建的库来处理窗口、菜单、对话框等原生元素，因此您可以构建美观、功能丰富的桌面应用程序。

**It does not embed a browser**, so it delivers a small runtime. Instead, it reuses the native rendering engine for the platform. 在 Windows 上，是基于 Chromium 构建的新 Microsoft Webview2 库。

### Go 和 JavaScript 互操作

Wails 自动使您的 Go 方法可用于 JavaScript，因此您可以从前端按名称调用它们！ 它甚至会生成 Go 方法使用的结构体的 TypeScript 版本，因此您可以在 Go 和 JavaScript 之间传递相同的数据结构。

### 运行时库

Wails 为 Go 和 JavaScript 提供了一个运行时库，它可以处理现代应用程序需要的很多东西，比如事件、日志记录、对话框等。

### 实时开发体验

#### 自动重新构建

当您在“开发”模式下运行您的应用程序时，Wails 会将您的应用程序构建为原生桌面应用程序，但会从磁盘读取您的资源。 它将检测您的 Go 代码的任何更改并自动重新构建和重新启动您的应用程序。

#### 自动重新加载

当检测到对您的应用程序资产的更改时，您正在运行的应用程序将“重新加载”，几乎立即反映您的更改

#### 在浏览器中开发您的应用程序

如果您更喜欢在浏览器中调试和开发，那么 Wails 可以满足您的需求。 正在运行的应用程序还有一个网络服务器，它将在连接到它的任何浏览器中运行您的应用程序。 当您的资源在磁盘上发生变化时，它会刷新。

### 可用于生产的原生二进制文件

当您准备好完成应用程序的最终构建时，CLI 会将其编译为单个可执行文件，并将所有资源打包到其中。 在 Windows 和 MacOS 上，可以创建用于分发的原生包。 使用打包工具后生成的资源（图标、info.plist、清单文件等）是您项目的一部分，可以自定义，让您完全控制应用程序的构建方式。

### 工具

Wails CLI 提供了一种简单的方法来生成、构建和打包您的应用程序。 它将完成创建图标的繁重工作，使用最佳设置编译您的应用程序，并提供可分发的、可用于生产的二进制文件。 可以从许多入门模板中进行选择，以快速启动和运行！
