使用Go+ Wails开发轻量级桌面应用端

Wails 是一个使用 Go 语言开发的框架,允许开发者使用 Go 和前端技术(如 HTML、CSS 和 JavaScript)来构建跨平台的桌面应用程序。Wails 提供了一个简单的方式来将 Go 代码与前端代码集成,并生成原生的桌面应用。

以下是一个详细的教程,帮助你使用 Wails 开发桌面应用,并附上中文教程。

1. 安装 Wails

首先,你需要安装 Wails CLI。Wails 支持 Windows、macOS 和 Linux 平台。

安装 Go

确保你已经安装了 Go 语言。你可以从 Go 官方网站 下载并安装 Go。

安装 Wails CLI

在终端中运行以下命令来安装 Wails CLI:

go install github.com/wailsapp/wails/v2/cmd/wails@latest

安装完成后,你可以通过以下命令验证安装是否成功:

wails doctor

2. 创建一个新的 Wails 项目

使用 Wails CLI 创建一个新的项目:

wails init

运行上述命令后,Wails 会提示你输入项目名称、选择模板(如 vanillavue),并生成项目结构。

例如,你可以创建一个名为 myapp 的项目:

wails init -n myapp

3. 项目结构

生成的项目结构如下:

myapp/
├── build/
├── frontend/
│   ├── src/
│   ├── public/
│   ├── package.json
│   └── ...
├── main.go
├── wails.json
└── ...
  • main.go:Go 代码的主入口文件。
  • frontend/:前端代码目录,包含 HTML、CSS 和 JavaScript 文件。
  • wails.json:Wails 项目的配置文件。

4. 编写 Go 代码

main.go 文件中,你可以编写 Go 代码来处理业务逻辑。Wails 提供了一个 runtime 包,允许你与前端进行交互。

package main

import (
    "github.com/wailsapp/wails/v2/pkg/runtime"
    "log"
    "context"
)

// App struct
type App struct {
    ctx context.Context
}

// NewApp creates a new App application struct
func NewApp() *App {
    return &App{}
}

// startup is called when the app starts. The context is saved
// so we can call the runtime methods
func (a *App) startup(ctx context.Context) {
    a.ctx = ctx
}

// Greet returns a greeting for the given name
func (a *App) Greet(name string) string {
    return "Hello " + name + "!"
}

func main() {
    err := wails.Run(&options.App{
        Title:  "MyApp",
        Width:  1024,
        Height: 768,
        Bind: []interface{}{
            NewApp(),
        },
    })
    if err != nil {
        log.Fatal(err)
    }
}

5. 编写前端代码

frontend/src/ 目录下,你可以编写前端代码。Wails 支持使用 HTML、CSS 和 JavaScript 来构建用户界面。

例如,在 frontend/src/index.html 中:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>MyApp</title>
</head>
<body>
    <h1>Welcome to MyApp</h1>
    <input type="text" id="name" placeholder="Enter your name">
    <button onclick="greet()">Greet</button>
    <p id="result"></p>

    <script src="/wails/runtime.js"></script>
    <script src="/wails/ipc.js"></script>
    <script>
        async function greet() {
            const name = document.getElementById('name').value;
            const result = await window.backend.App.Greet(name);
            document.getElementById('result').innerText = result;
        }
    </script>
</body>
</html>

6. 运行和构建应用

运行应用

在开发模式下,你可以使用以下命令运行应用:

wails dev

这将启动一个开发服务器,并在浏览器中打开应用。

构建应用

当你准备好发布应用时,可以使用以下命令构建应用:

wails build

这将生成一个可执行文件,可以在目标平台上运行。

7. 中文教程

7.1 安装 Wails

确保你已经安装了 Go 语言,然后使用以下命令安装 Wails CLI:

go install github.com/wailsapp/wails/v2/cmd/wails@latest

7.2 创建项目

使用以下命令创建一个新的 Wails 项目:

wails init -n 我的应用

7.3 编写代码

main.go 中编写 Go 代码,在 frontend/src/ 中编写前端代码。

7.4 运行和构建

使用 wails dev 运行应用,使用 wails build 构建应用。

标签: Go

相关文章

一些编程语言学习心得

作为一名专注于PHP、Go、Java和前端开发(JavaScript、HTML、CSS)的开发者,还得会运维、会谈客户....不想了,都是泪,今天说说这些年学习编程语言的一些体会,不同编程语言在...

在 Go 项目中使用 LevelDB 进行数据存储

LevelDB 是一个由 Google 开发的高性能键值存储库,广泛应用于需要快速读写操作的场景。本文将介绍如何在 Go 项目中使用 LevelDB 作为数据存储,并通过示例代码展示如何初始化数...

详解Go语言依赖注入工具wire最佳实践介绍与使用

wire是一个强大的依赖注入工具,通过代码生成的方式实现了高效的依赖注入。本文详细介绍了wire的入门级和高级使用技巧,并通过示例代码展示了其强大的功能。无论是简单的依赖注入,还是复杂的依赖图生...

Go语言中copy命令讲解 切片之间复制元素

在Go语言中,copy函数是一个非常常用的内置函数,用于在切片(slice)之间复制元素。理解copy函数的用法和机制对于高效处理数据操作至关重要1. copy函数的基本用法copy函数的基本语...

深入理解 Go 语言中的 goto:用法与最佳实践

在学习编程语言时,goto 一直是一个颇具争议的概念。它常常因为“跳跃式”的行为被认为会让代码混乱且难以维护,但在 Go 语言中,goto 被保留并提供了一些实际的应用场景。今天我们将深入探讨 ...

Go并发编程与调度器及并发模式详解

Go语言以其简洁的语法和强大的并发能力,成为现代网络编程和微服务架构的热门选择。本文将深入探讨Go的并发编程模型,调度器的工作机制,以及多种并发模式的实现和应用,帮助开发者更好地理解并发编程的设...

图片Base64编码

CSR生成

图片无损放大

图片占位符

Excel拆分文件