跳到正文

项目结构

Go 项目把应用代码放在 Go 模块里,开发命令放在一个小型 Bun 包里。

#生成的文件

my-app/
├── resources/
│   └── icon.png
├── main.go
├── go.mod
├── go.sum
├── quickgui.config.ts
├── package.json
└── README.md

解析依赖后请提交 go.sum。较大的应用可以拆成普通的 Go 包。

#应用入口

main.go 调用 native.Run 并打开窗口。组件是返回 *ui.Element 的函数。把构建出的界面返回出去,不要创建后丢弃。

func Hello() *ui.Element {
	return ui.View().Padding(20).Gap(12).Children(
		ui.Text("Hello from Go"),
		ui.Button().Child("Continue").OnClick(func() {}),
	)
}

#配置

entry 是要构建的 Go 包。配置文件给 CLI 使用,运行中的应用不会加载它。

import { defineConfig } from "@quickgui/cli";

export default defineConfig({
  name: "My App",
  identifier: "com.example.my-app",
  entry: ".",
});

也可以改用 quickgui.toml:

name = "My App"
identifier = "com.example.my-app"
entry = "."

CLI 会先读 quickgui.toml,再读 quickgui.config.ts。用 --config configs/dev.toml 指定文件。版本号请加引号,例如 version = "..."。

应用图标来自 resources/icon.png。额外文件可以列在 resources 中。用 fonts 注册自定义字体。见应用图标和打包资源。

export default defineConfig({
  name: "My App",
  identifier: "com.example.my-app",
  entry: ".",
  fonts: ["assets/MyFont.ttf"],
});

#软件包

  • github.com/egoist/quickgui/go/native — 窗口和平台 API
  • github.com/egoist/quickgui/go/ui — 组件和样式
  • github.com/egoist/quickgui/go/reactive — 进阶代码用到的 owner 与 context

@quickgui/cli 是开发依赖。要共享自己的组件,见编写扩展。

#本地开发

quickgui dev
quickgui fmt
quickgui check
quickgui build

dev 会在 Go 源码或配置文件变化时重新加载。