Go语言是一门开源的编程语言,它的设计目标是让开发者更加容易地编写简洁、高效的代码。Go语言在近年来的发展中,已经成为了一个非常流行的开发语言。在Go语言中,开发者可以使用各种工具和库来快速开发。 至此,我也开源了一个RuoYI-Go 项目,想做最简单后台开发模板。感觉go 很有意思。
至此呢,也尝试开发Windows桌面程序。下面,我们将介绍如何使用Go语言来开发Windows桌面程序。
fyne
基本环境
Fyne 需要存在 3 个基本元素,Go 工具(至少 1.12 版)、一个 C 编译器(用于连接系统图形驱动程序)和一个系统图形驱动程序。说明因您的操作系统而异,请选择下面的相应选项卡以获取安装说明。
请注意,这些步骤只是开发所必需的——您的 Fyne 应用程序不需要为最终用户进行任何设置或依赖安装!
环境检查
img_2.png
也可以
go run fyne.io/fyne/v2/cmd/fyne_demo@latest
出现这样的
可以认为还没有成功,这样情况很多,需要进行不同环境测试。
第一个Demo
package main
import (
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/widget"
)
func main() {
a := app.New()
w := a.NewWindow("Hello World")
w.SetContent(widget.NewLabel("Hello World!"))
w.ShowAndRun()
}
image.png
然后进行
go mod tidy
打包
fyne package -os windows -icon app.png
成功生成exe 文件
img.png
运行截图
img_1.png
github 地址:https://github.com/fyne-io/fyne
至此最简单的一个windows 应用完成。
学习地址:https://www.topgoer.cn/docs/goday/goday-1crdp17nj4v6p
electron-egg 新一代桌面应用开发框架
为什么使用electron?
我们先来看一下electron技术的官方介绍:
Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需要本地开发 经验。
就好比 Spring之于java,thinkphp之于php,nuxt.js之于vue;electron只提供了基础的函数和api,但你写项目的时候,业务和代码工程化是需要自己实现的,ee就提供了这个工程化能力。
环境
node.js: v16.20.0
electron: v21.4.4
better-sqlite3: v8.6.0 (可选)
node.js: v14.21.1
electron: v13.6.9
better-sqlite3: v7.6.0 (可选)
node.js: v12.22.0
electron: v12.2.3
better-sqlite3: v7.6.0 (可选)
然后运行demo
官方demo
image.png
看目录就知道前端页面就是vue 界面。
效果
image.png image.png简单到爆了,只要会vue 界面基本上就可以上手了。并且是国人开发的。
tauri
Tauri 是一个跨平台 GUI 框架,与 Electron 的思想基本类似。都是属于跨平台技术的解决方案
我们一般会把tauri作为 Electron 的替代方案,electron优点咱们不看,这里就提两个electron比较明显的问题:
安装包大小。Electron 应用程序需要内置 Chromium 渲染引擎和 Node.js 环境,导致项目安装包很大。
资源占用。Electron 占用较高的 CPU 和内存资源,作为小型的工具类项目应用,用户体验会不太友好。
启动时间稍显长。
Tauri 作为一种使用 Rust 和 Web 技术栈构建跨平台桌面应用的框架。这里也分析一下它的几个优点和缺点:
优点
高性能:Tauri 使用 Rust 语言编写底层代码,具有内存安全、高性能和并发性等优点。
跨平台支持:Tauri 支持多个平台,如 Windows、macOS 和 Linux,可以帮助开发者轻松地构建跨平台的应用。
小安装包:由于 Tauri 应用程序使用原生控件和 Web 技术结合的方式,因此安装包相对较小。
启用时间较短。
安全性:使用操作系统的原生 GUI 控件来创建应用程序界面,从而提高了应用程序的可访问性和安全性。
缺点
学习成本:由于 Tauri 使用 Rust 和 Web 技术进行开发,因此需要具备一定的 Rust 和 Web 开发经验,对于新手开发者来说可能需要一定的学习成本。
社区规模:相比于其他框架,Tauri 的社区规模还相对较小,可能需要开发者自行解决一些问题。
可维护性:Tauri 尚处于快速发展阶段,可能存在 API 变动和不稳定的情况。以及webview也会有一些本身自带的兼容性问题等等
环境
操作系统: Windows 11 22H2 22621.1848
开发环境: NodeJS 16.20.1
PNPM: 8.6.6
Rust:default host triple: x86_64-pc-windows-msvc
整体构成
Tauri主要基于以下几个关键技术:
- Rust
- Web技术
- Webview
- 在 Tauri 架构中,Rust 应用程序是整个系统的核心,它提供了 Tauri API 的实现。通过tauri api让 Rust 应用程序与 WebView 和 Web 内容进行交互。
- WebView 是一个通用的 Web 容器,通常基于底层平台的内置 Web 技术实现,例如:macOS 上的 WKWebView 和 Windows 上的 Edge WebView。WebView 用于加载 Web 内容,使其可以显示在原生桌面应用程序中。
- Web 内容是在 WebView 中加载的 HTML、CSS 和 JavaScript 代码。Tauri 可以加载远程 Web 内容,也可以加载本地 Web 内容,例如打包在原生应用程序中的 Web 资源。
通过这个架构,Tauri 提供了一种快速创建跨平台原生桌面应用程序的方法,充分利用了 Rust 的性能和 Web 技术的灵活性。那么,接下来简单讲一下这三块都有哪些内容。
Demo
整体文件就是这样的。
tauri.conf.json 里面配置dist 的文件和icon 图标地方。
打包
pnpm tauri build(在根目录)
总体来说包小了不少,可以立即为一个壳里面有一个webview 展示他,后台部分也可以独立打包,也可以打包成exe或其他平台的进行运行了。新鲜事物总要费电力气去完善和接受的。
【完】
网友评论