首页 前端知识 Lorca: 打造轻量级HTML5桌面应用的利器

Lorca: 打造轻量级HTML5桌面应用的利器

2024-09-27 09:09:32 前端知识 前端哥 241 91 我要收藏

Lorca: 打造轻量级HTML5桌面应用的利器

lorcaBuild cross-platform modern desktop apps in Go + HTML5项目地址:https://gitcode.com/gh_mirrors/lo/lorca

Lorca Logo

Lorca 是一个由纯Go语言编写的微小库,它的目标是让你在Go中构建现代HTML5桌面应用程序变得轻松。这个项目不将Chrome浏览器捆绑到应用程序包中,而是利用已经安装的版本作为UI层,提供了一种高效且简洁的方式来调用Go代码和操作用户界面。

功能亮点

  • 精简API: 简单易用的纯Go库,无需cgo。
  • 小巧可人: 应用程序体积通常仅为5-10MB。
  • 性能与美观并存: 利用HTML/CSS创建漂亮界面,结合Go的强大性能和开发便捷性。
  • 双向交互: 在JavaScript中调用Go函数,从Go中控制UI。
  • 异步流畅: 支持两种语言之间的异步流程(Go中的async/await和Goroutines)。
  • 灵活加载: 可以通过本地Web服务器或数据URL加载Web界面。
  • 无头测试: 支持在无头模式下测试你的应用。
  • 多窗口支持: 创建多个应用窗口。
  • 打包定制: 支持跨平台打包,并可自定义应用图标。

请注意,Lorca有一些设计上的限制:

  • 需要已安装Chrome/Chromium 70及以上版本。
  • 目前无法控制Chrome窗口(如去除边框、透明度、位置或大小)。
  • 不包含窗口菜单,但可以通过第三方库实现托盘菜单和原生对话框。

如果你希望拥有更多对浏览器窗口的控制权,可以考虑使用类似的webview库进行迁移。

使用示例

ui, _ := lorca.New("", "", 480, 320)
defer ui.Close()

// 将Go函数绑定到JS,Go函数可以在JS中表现为Promise
ui.Bind("add", func(a, b int) int { return a + b })

// 从Go中调用JS函数
n := ui.Eval(`Math.random()`).Float()
fmt.Println(n)

// JS调用Go,然后再回调回JS
m := ui.Eval(`add(2, 3)`).Int()
fmt.Println(m)

// 当浏览器窗口关闭时结束
<-ui.Done()

查看示例了解更多关于绑定函数和打包二进制文件的信息。

快速上手:Hello World

按照以下步骤运行Hello World示例:

cd examples/counter
go get
go run ./

工作原理

Lorca通过Chrome DevTools协议在Chrome实例下工作。首先,它会找到已安装的Chrome,启动远程调试实例并绑定到一个临时端口,从stderr获取实际的WebSocket端点。然后,Lorca打开一个新的客户端连接到WebSocket服务器,并通过发送JSON消息来执行Chrome DevTools协议方法来控制Chrome。JavaScript函数在Chrome中执行,而Go函数则在Go运行环境中运行,并将返回值发送给Chrome。

名字背后的故事

Lorca的名字来源于西班牙诗人费德里科·加西亚·洛尔卡(Federico García Lorca)。据说他在被处决前看到了士兵头顶升起的朝阳,感叹道:“然而,太阳依然升起...”——这可能是他一首诗的开头,这也象征了Lorca项目的活力和持续发展。

许可证

代码遵循MIT许可,欢迎在商业项目中使用。


通过Lorca,你可以享受Go带来的高性能和便捷开发,同时利用HTML5的力量来创造引人注目的用户界面。现在就加入Lorca的世界,开启你的桌面应用开发之旅吧!

lorcaBuild cross-platform modern desktop apps in Go + HTML5项目地址:https://gitcode.com/gh_mirrors/lo/lorca

转载请注明出处或者链接地址:https://www.qianduange.cn//article/18619.html
标签
评论
发布的文章
大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!