README.md 7.0 KB
Newer Older
yanghye's avatar
yanghye 已提交
1
# Energy 是Go基于CEF的构建桌面应用的框架
yanghye's avatar
yanghye 已提交
2
中文 |
yanghye's avatar
yanghye 已提交
3
[English](https://github.com/energye/energy/blob/main/README.en-US.md)
yanghye's avatar
readme  
yanghye 已提交
4

yanghye's avatar
yanghye 已提交
5 6 7 8 9 10 11 12 13
---
### 简介
> [Energy](https://github.com/energye/energy) 是使用JavaScript,HTML,CSS 构建桌面应用的框架, 是基于 [Golcl](https://github.com/energye/golcl) 和 [CEF4Delphi](https://patreon.com/salvadordf) 纯Go语言开发的框架,内嵌 [Chromium CEF](https://bitbucket.org/chromiumembedded/cef) 二进制
>
> 可以让你使用web前端开发技术构建在Windows, Linux, MacOS跨平台的应用
>
> 也可以使用 [Energy](https://github.com/energye/energy) 和 [Golcl](https://github.com/energye/golcl) 构建使用系统级本地UI和使用Web前端技术跨平台的应用
>
> 支持 Windows_32、64 bits, Linux_x86_64 bits, MacOS_x86_64 bits
yanghye's avatar
readme  
yanghye 已提交
14

yanghye's avatar
yanghye 已提交
15
### ![windows 32 bits](https://img.shields.io/badge/Downloads-green) CEF(105.3.39)和Energy动态链接库压缩包下载 
yanghye's avatar
yanghye 已提交
16
#### 这里CEF是[Chromium](https://bitbucket.org/chromiumembedded/cef/)提供的下载地址, [Energy](https://github.com/energye/liblcl)是预编译好的动态链接库
yanghye's avatar
yanghye 已提交
17 18 19 20 21 22
| CEF                                                                                                                               | Energy                                                                                                                                                                                              |
|-----------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Windows 32 bits](https://cef-builds.spotifycdn.com/cef_binary_105.3.39%2Bg2ec21f9%2Bchromium-105.0.5195.127_windows32.tar.bz2)   | [![windows 32 bits](https://img.shields.io/badge/downloads-Windows%2032%20bits-brightgreen)](https://github.com/energye/energy/releases/download/v1.0.0/liblcl-105.0.5195.127_windows32.zip)        |
| [Windows 64 bits](https://cef-builds.spotifycdn.com/cef_binary_105.3.39%2Bg2ec21f9%2Bchromium-105.0.5195.127_windows64.tar.bz2)   | [![windows 64 bits](https://img.shields.io/badge/downloads-Windows%2064%20bits-brightgreen)](https://github.com/energye/energy/releases/download/v1.0.0/liblcl-105.0.5195.127_macosx64.zip)         |
| [Linux x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_105.3.39%2Bg2ec21f9%2Bchromium-105.0.5195.127_linux64.tar.bz2)   | [![linux x86 64 bits](https://img.shields.io/badge/downloads-Linux%20x86%2064%20bits-brightgreen)](https://github.com/energye/energy/releases/download/v1.0.0/liblcl-105.0.5195.127_linux64.zip)    |
| [MacOSX x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_105.3.39%2Bg2ec21f9%2Bchromium-105.0.5195.127_macosx64.tar.bz2) | [![macOSX x86 64 bits](https://img.shields.io/badge/downloads-MacOSX%20x86%2064%20bits-brightgreen)](https://github.com/energye/energy/releases/download/v1.0.0/liblcl-105.0.5195.127_macosx64.zip) |
yanghye's avatar
yanghye 已提交
23

yanghye's avatar
yanghye 已提交
24
#### [动态链接库压缩包使用说明]()
yanghye's avatar
yanghye 已提交
25 26
##### 压缩包文件windows和linux只用到了Release和Resources目录内的文件, MacOSX只用到了Release目录内文件
##### windows和linux使用
yanghye's avatar
yanghye 已提交
27
> 下载CEF和Energy对应版本的动态链接库压缩包
yanghye's avatar
yanghye 已提交
28
> 
yanghye's avatar
yanghye 已提交
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
> 1. 新建文件夹ChromiumDemo(文件夹名称自己随意取)
> 2. CEF 提取Release和Resources目录‘内’文件到ChromiumDemo文件夹
> 3. Energy 提取动态链接库到ChromiumDemo文件夹
> 4. 最终的目录结构
>>   ChromiumDemo文件夹目录
>>>  locales
>>>
>>>  cef_sandbox.lib
>>>
>>>  chrome_100_percent.pak
>>>
>>>  chrome_200_percent.pak
>>>
>>>  chrome_elf.dll
>>>
>>>  d3dcompiler_47.dll
>>>
>>>  icudtl.dat
>>>
>>>  libcef.dll
>>>
>>>  libcef.lib
>>>
>>>  libEGL.dll
>>>
>>>  libGLESv2.dll
>>>
>>>  liblcl.dll
>>>
>>>  resources.pak
>>>
>>>  snapshot_blob.bin
>>>
>>>  v8_context_snapshot.bin
>>>
>>>  vk_swiftshader.dll
>>>
>>>  vk_swiftshader_icd.json
>>>
>>>  vulkan-1.dll
>  5. 最后把Go编写的程序编译好执行文件放到ChromiumDemo目录
yanghye's avatar
yanghye 已提交
70

yanghye's avatar
yanghye 已提交
71
##### MacOSX使用
yanghye's avatar
yanghye 已提交
72
> 下载CEF和Energy对应版本的动态链接库压缩包
yanghye's avatar
yanghye 已提交
73 74 75 76 77 78 79 80 81 82 83 84
> 1. 新建文件夹ChromiumDemo(文件夹名称自己随意取)
> 2. CEF 提取Release目录‘内’文件到ChromiumDemo文件夹
> 3. Energy 提取动态链接库到ChromiumDemo文件夹
> 4. 最终的目录结构
>> ChromiumDemo文件夹目录
>>> Chromium Embedded Framework.framework
>>> 
>>> cef_sandbox.a
>>> 
>>> liblcl.dylib

### [入门指南-网址](https://energy.yanghy.cn)
yanghye's avatar
yanghye 已提交
85 86 87
* [教程](https://energy.yanghy.cn/#/course/6342d92c401bfe4d0cdf6065)
* [示例](https://energy.yanghy.cn/#/example/6342d986401bfe4d0cdf6067)
* [文档](https://energy.yanghy.cn/#/document/6342d9a4401bfe4d0cdf6069)
yanghye's avatar
yanghye 已提交
88 89 90 91 92

### 快速入门
#### 基本需求
> golang >= 1.9.2
>
yanghye's avatar
yanghye 已提交
93
> 下载对应平台的CEF和Energy的动态链接库.并将其解压至任意目录.
yanghye's avatar
yanghye 已提交
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
>
> 以example/simple示例为例
>
> 安装energy依赖 go get github.com/energye/energy
>
> 或者使用 go mod init, go mod tidy
>
> 运行simple
>
> 打包应用程序 Energy 没有打包模块, windows你可以使用(MSI或Inno Setup)和其它绿色打包工具, linux下deb安装包等, MacOS默认开发时会生成.app包或者自行定制.app包

##### example/simple 示例代码
```go
package main

import (
	"embed"
	"fmt"
	"github.com/energye/energy/cef"
	"github.com/energye/golcl/lcl"
)

//go:embed resources
var resources embed.FS

//这是一个简单的窗口创建示例
func main() {
	//全局初始化 每个应用都必须调用的
	cef.GlobalCEFInit(nil, &resources)
	//可选的应用配置
	cfg := cef.NewApplicationConfig()
	//指定chromium的二进制包框架根目录, 不指定为当前程序执行目录
yanghye's avatar
yanghye 已提交
126
	cfg.SetFrameworkDirPath("/xxxx/xxxx/ChromiumDemo")
yanghye's avatar
yanghye 已提交
127 128 129 130 131 132 133 134 135 136 137 138
	//创建应用
	cefApp := cef.NewApplication(cfg)
	//主窗口的配置
	//指定一个URL地址,或本地html文件目录
	cef.BrowserWindow.Config.DefaultUrl = "https://energy.yanghy.cn"
	//窗口的标题
	cef.BrowserWindow.Config.Title = "energy - 这是一个简单的窗口示例"
	//窗口宽高
	cef.BrowserWindow.Config.Width = 1024
	cef.BrowserWindow.Config.Height = 768
	//chromium配置
	cef.BrowserWindow.Config.SetChromiumConfig(cef.NewChromiumConfig())
yanghye's avatar
demo  
yanghye 已提交
139
	//创建窗口时的回调函数 对浏览器事件设置,和窗口属性组件等创建和修改
yanghye's avatar
yanghye 已提交
140 141 142 143 144
	cef.BrowserWindow.SetBrowserInit(func(event *cef.BrowserEvent, browserWindow *cef.TCefWindowInfo) {
		//设置应用图标 这里加载的图标是内置到执行程序里的资源文件
		lcl.Application.Icon().LoadFromFSFile("resources/icon.ico")
		fmt.Println("SetBrowserInit")
	})
yanghye's avatar
demo  
yanghye 已提交
145
	//创建窗口之后对对主窗口的属性、组件或子创建的创建
yanghye's avatar
yanghye 已提交
146 147 148 149 150 151 152 153
	cef.BrowserWindow.SetBrowserInitAfter(func(browserWindow *cef.TCefWindowInfo) {
		fmt.Println("SetBrowserInitAfter")
	})
	//运行应用
	cef.Run(cefApp)
}
```
### 安装
yanghye's avatar
yanghye 已提交
154
* 下载对应平台CEF和Energy的二进制压缩包
yanghye's avatar
yanghye 已提交
155 156
* 安装energy依赖 go get github.com/energye/energy 或者使用 go mod init, go mod tidy
* 创建GO程序应用, 参考入门指南和example示例