美文网首页
Go桌面应用(GUI)的几种开发方式

Go桌面应用(GUI)的几种开发方式

作者: 客观开发者 | 来源:发表于2023-09-26 15:21 被阅读0次

    Go语言是一门开源的编程语言,它的设计目标是让开发者更加容易地编写简洁、高效的代码。Go语言在近年来的发展中,已经成为了一个非常流行的开发语言。在Go语言中,开发者可以使用各种工具和库来快速开发。 至此,我也开源了一个RuoYI-Go 项目,想做最简单后台开发模板。感觉go 很有意思。

    至此呢,也尝试开发Windows桌面程序。下面,我们将介绍如何使用Go语言来开发Windows桌面程序。

    fyne

    基本环境

    Fyne 需要存在 3 个基本元素,Go 工具(至少 1.12 版)、一个 C 编译器(用于连接系统图形驱动程序)和一个系统图形驱动程序。说明因您的操作系统而异,请选择下面的相应选项卡以获取安装说明。

    请注意,这些步骤只是开发所必需的——您的 Fyne 应用程序不需要为最终用户进行任何设置或依赖安装!

    官方 https://developer.fyne.io/started/

    环境检查


    img_2.png

    也可以
    go run fyne.io/fyne/v2/cmd/fyne_demo@latest
    出现这样的

    img_3.png

    可以认为还没有成功,这样情况很多,需要进行不同环境测试。

    第一个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主要基于以下几个关键技术:

    1. Rust
    2. Web技术
    3. 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

    image.png

    整体文件就是这样的。

    tauri.conf.json 里面配置dist 的文件和icon 图标地方。
    打包

     pnpm tauri build(在根目录)
    

    总体来说包小了不少,可以立即为一个壳里面有一个webview 展示他,后台部分也可以独立打包,也可以打包成exe或其他平台的进行运行了。新鲜事物总要费电力气去完善和接受的。

    【完】

    相关文章

      网友评论

          本文标题:Go桌面应用(GUI)的几种开发方式

          本文链接:https://www.haomeiwen.com/subject/elrhbdtx.html