# 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 [![Build Status](https://img.shields.io/github/workflow/status/zserge/lorca/CI%20Pipeline)](https://github.com/zserge/lorca) [![GoDoc](https://godoc.org/github.com/zserge/lorca?status.svg)](https://godoc.org/github.com/zserge/lorca) [![Go Report Card](https://goreportcard.com/badge/github.com/zserge/lorca)](https://goreportcard.com/report/github.com/zserge/lorca)
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)许可分发的,您可以随意使用它 项目。