Golang Wails桌面开发

最近想用Golang的Wails框架开发桌面应用,但遇到几个问题想请教:

  1. Wails的UI部分必须用前端框架吗?能否直接用HTML/CSS/JS实现?
  2. 打包后的应用体积较大,有什么优化建议?
  3. 如何实现Go与前端之间的高效数据交互?比如频繁传大量数据时会不会有性能问题?
  4. 在Windows上开发时需要特别注意什么?比如依赖或权限问题。
    有没有实际项目经验的朋友能分享一下踩坑经验?
2 回复

Wails是一个Go框架,用于构建跨平台桌面应用。它结合了Go后端和前端技术(如Vue、React),支持原生窗口和系统API调用。适合快速开发轻量级桌面软件。

更多关于Golang Wails桌面开发的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Wails 是一个用于使用 Go 和前端技术(如 HTML、CSS、JavaScript)构建桌面应用程序的框架。它允许您将 Go 后端与 Web 前端结合,创建跨平台的桌面应用。

主要特性:

  • 跨平台支持:支持 Windows、macOS 和 Linux。
  • Go 后端:使用 Go 处理业务逻辑、系统调用等。
  • 前端集成:支持任何前端框架(如 Vue、React、Svelte)或纯 HTML/CSS/JS。
  • 内置功能:包括自动重建、应用打包和原生菜单支持。

安装 Wails:

确保已安装 Go(1.16+)和 Node.js,然后运行:

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

快速入门:

  1. 创建新项目

    wails init -n MyApp -t react
    

    这会生成一个使用 React 作为前端的项目结构。

  2. 项目结构

    • main.go:应用入口点。
    • frontend/:前端代码目录。
    • go.mod:Go 模块文件。
  3. 示例代码

    • 后端(Go):在 main.go 中定义方法供前端调用:
      package main
      
      import "context"
      
      type App struct {
         ctx context.Context
      }
      
      func NewApp() *App {
         return &App{}
      }
      
      func (a *App) startup(ctx context.Context) {
         a.ctx = ctx
      }
      
      // Greet 方法供前端调用
      func (a *App) Greet(name string) string {
         return "Hello, " + name + "!"
      }
      
    • 前端(React):在 frontend/src/App.jsx 中调用后端方法:
      import { invoke } from '@wailsio/runtime'
      
      function App() {
         const greet = async () => {
            const result = await invoke('Greet', 'World');
            alert(result);
         };
      
         return (
            <div>
               <button onClick={greet}>Greet</button>
            </div>
         );
      }
      export default App;
      
  4. 运行和构建

    • 开发模式:wails dev 启动实时重载。
    • 构建应用:wails build 生成可执行文件。

进阶功能:

  • 事件系统:使用 EmitOn 进行前后端事件通信。
  • 菜单配置:通过 app.NewMenu() 添加原生菜单。
  • 窗口定制:在 main.go 中设置窗口大小、标题等。

注意事项:

  • 确保前端依赖已安装(如运行 npm install)。
  • 使用 wails doctor 检查环境配置。

Wails 简化了桌面应用开发,结合了 Go 的性能和前端的灵活性。查看 官方文档 获取更多示例和详细指南。

回到顶部