# lorca
**Repository Path**: ptzzycode/lorca
## Basic Information
- **Project Name**: lorca
- **Description**: fork https://github.com/zserge/lorca/
新增Edge、Edge Dev、360chrome
- **Primary Language**: Go
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2021-10-14
- **Last Updated**: 2022-05-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 介绍
fork by https://github.com/zserge/lorca/
新增Edge、Edge Dev、360chrome支持
```
go.mod
require github.com/zserge/lorca v0.1.9
replace github.com/zserge/lorca v0.1.9 => gitee.com/zzk-tmpl/lorca.git v0.0.0-20201228093807-2e996903ea9b
```
# Lorca
[](https://github.com/zserge/lorca)
[](https://godoc.org/github.com/zserge/lorca)
[](https://goreportcard.com/report/github.com/zserge/lorca)
一个非常小的库,用于在Go中构建现代HTML5桌面应用程序。它使用的是Chrome。
浏览器作为UI层。与Electron不同的是,它不会将Chrome捆绑到应用程序中。
包,而是重用已安装的包。洛尔卡。
建立与浏览器窗口的连接并允许调用GO代码。
从用户界面(UI)和从围棋(Go)以无缝方式操作用户界面(UI)。
## Features
* 纯Go库(无CGO),API非常简单。
* 较小的应用程序大小(通常为5-10MB)。
* 两全其美-HTML/CSS的全部功能使您的UI看起来。
好,结合围棋性能和易开发性。
* 公开Go函数/方法并从JavaScript调用它们。
* 从开始调用任意JavaScript代码。
* 两种语言的UI和主应用之间的异步流程(异步/等待和Goroutines)。
* 支持从本地Web服务器或通过数据URL加载Web UI。
* 支持将所有资源嵌入到单个二进制文件中。
* 支持在无头模式下使用UI测试您的应用。
* 支持多个应用程序窗口。
* 支持打包和品牌化(例如自定义应用程序图标)。面向所有人的包装。
使用GOOS和GOARCH变量可以在一台机器上完成三个操作系统。
* 此外,还有设计方面的限制:
* 需要安装铬/铬>=70。
* 目前还不能控制Chrome窗口(例如,您不能删除边框,请设置边框。
透明、控制位置或大小)。
* 无窗口菜单(托盘菜单和本机操作系统对话框仍可通过。
第三方库)
如果您希望更好地控制浏览器窗口-请考虑使用。
[Webview](具有类似接口的https://github.com/zserge/webview)库,因此。
迁移将会很顺利。
## Example
```go
ui, _ := lorca.New("", "", 480, 320)
defer ui.Close()
//绑定Go函数在JS中可用。GO功能可能运行时间较长,并且。
//BLOCKING-在JS中,它用承诺表示。
ui.Bind("add", func(a, b int) int { return a + b })
// 从GO调用JS函数。函数可以是异步的,即返回承诺
n := ui.Eval(`Math.random()`).Float()
fmt.Println(n)
// 调用JS,调用GO等等……
m := ui.Eval(`add(2, 3)`).Int()
fmt.Println(m)
// 等待浏览器窗口关闭
<-ui.Done()
```

此外,有关绑定函数、嵌入的更多详细信息,请参见[示例](示例。
资产和打包二进制文件。
## Hello World
Here are the steps to run the hello world example.
```
cd examples/counter
go get
go run main.go
```
## How it works
在幕后,洛尔卡使用[Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/)]来检测Chrome实例。首先,Lorca尝试定位您安装的Chrome,启动一个绑定到临时端口的远程调试实例,并从实际WebSocket端点的`stderr`读取。然后,Lorca打开一个新的客户端连接到WebSocket服务器,并通过WebSocket发送Chrome DevTools协议方法的JSON消息来检测Chrome。JavaScript函数在Chrome中求值,而Go函数实际上在Go运行时运行,并将返回值发送到Chrome。
## What's in a name?
> 有一种传说,在处决加西亚·洛尔卡之前,他看到了一个。
> 日出从士兵的头顶升起,他说:“然而,太阳升起了……”
> 很可能是一首诗的开头。(J·布罗茨基)
洛尔卡是[Carlo](https://github.com/GoogleChromeLabs/carlo/),a的字谜。
对Node.js具有类似目标的项目。
## License
代码是根据麻省理工学院(MIT)许可分发的,您可以随意使用它
项目。