• Go Energy 实现的跨平台桌面(GUI)应用介绍


    在这里插入图片描述

    关于 Energy

    Energy是Go语言基于LCL和CEF开发的跨平台桌面应用框架
    系统支持
    Windows 系列 XP SP3 到 Windows 11, Linux,MacOS.

    版本

    当前版本2.x

    底层动态链接库 liblcl
    LCL: Lazarus 跨平台 GUI LCL 组件库, 包含了大量的系统原生GUI控件, 多达几百个控件. 在Go里可以单独构建开发原生系统应用
    CEF: Chromium Embedded Framework, 是CEF4Delphi基于CEF3封装的API底层库, 属于LCL其中的一个控件库. 在Go中当前封装了多达85%以上的CEF API. 可以非常方便操作浏览器, 可以实现任何你想对浏览器做的事情.

    下个版本3.x, 提供更多的LCL控件, CEF API完全封装, 增加对Webview2, Webkit 支持.

    使用

    LCL: 在 Go 可独立开发小巧原生的GUI应用.
    CEF: 可与LCL结合混合使用,使用前端技术(JavaScript, HTML, CSS)开发GUI应用.

    使用 Energy 开发应用
    Go: 最底支持Go1.11版本。由于Go版本更新对于一些系统将不在支持。例如Go1.11可以编译支持Windows XP SP3程序,Go1.20支持Window7 / 8 / Server 2008 / Server 2012的最后一个版本, 根据实际情况选择不同的Go版本.
    CEF: 同样是对于一些更新后的版本将不在支持一些系统. Energy由于出现的比较晚, 但对于特定的系统做了支持.

    • WindowsXP SP3: CEF49, 它比较古老是最后一个支持XP系统的CEF,
    • Windows7 / 8 / Server 2008 / Server 2012: CEF109 是最后一个支持此版本的Windows系列
    • CEF89: 最后一个支持Flash的CEF版本
    • Linux: 区分为 GTK2 和 GTK3, CEF 106是最后一个支持GTK2的. 默认使用GTK3也就是Energy当前支持的最新CEF版本

    LCL: 不区分版本, 对任何系统都支持, 一视同仁. 但对CEF有些区别对待, 由于CEF 在Linux 下 对 GTK 支持不同, 表现为, 在Linux 下 CEF 106 使用的是GTK2. CEF大于106使用的是 GTK3 注意: 此时 如使用GTK3将无法使用LCL的组件.

    开发环境

    使用 energy 提供的工具自动安装开发环境, 它的安装过程主要为, 在网络下载CEF二进制框架和energy的底层动态链接库liblcl, 下载Go(如果已配置则不下载), 和其它可选择工具.
    或者自己编译 energy 命令行工具
    git clone https://github.com/energye/energy.git
    进入 cmd 目录 go install 安装 energy 命令行工具
    开发环境 安装教程

    开发环境安装好后, 我们使用几个命令创建一个项目

    1. 安装开发环境: energy install .
    2. 初始化应用: energy init .
    3. 运行应用: go run main.go

    初始化的代码

    package main
    
    import (
    	"embed"
    	"github.com/energye/energy/v2/cef"
    )
    
    //go:embed resources
    var resources embed.FS
    
    func main() {
    	//Global initialization must be called
    	cef.GlobalInit(nil, &resources)
    	//Create an application
    	app := cef.NewApplication()
    	//Local load resources
    	cef.BrowserWindow.Config.LocalResource(cef.LocalLoadConfig{
    		ResRootDir: "resources",
    		FS:         &resources,
    	}.Build())
    	//run app
    	cef.Run(app)
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    应用打包

    1. 编译:energy build .
    2. 打包:energy package .
    3. 自动生成的安装包
      • windows 使用nsis工具生成exe安装包
      • linux 使用dpkg制作deb安装包
      • macos 生成xxx.app

    文档

    energy 官网或 pkg.go.dev
    文档目前还不全面, 推荐参考示例

    示例

    提供了大量的使用示例.
    github examples
    gitee examples
    gitcode examples

    一些示例截图

    LCL+CEF
    macos-menu
    macos-dialog
    麒麟系统arm64

  • 相关阅读:
    ALM研发管理中规则库的配置与使用
    Java入门-Java语言概述
    视频汇聚/视频云存储/视频监控管理平台EasyCVR录像存储功能如何优化?具体步骤是什么?
    https
    Linux本地WBO创作白板部署与远程访问
    qml 两个listview共用一个listmodel,显示排斥的数据
    Path 路径使用
    运动与健康
    js对象易混淆知识
    阿里终面:说说OAuth2.0 与 单点登录的区别?
  • 原文地址:https://blog.csdn.net/snxamdf/article/details/138219285