Golang Go语言中go-quickjs:现在可以在 Golang Go语言中使用 QuickJS 引擎了
Golang Go语言中go-quickjs:现在可以在 Golang Go语言中使用 QuickJS 引擎了
https://github.com/wspl/go-quickjs
自 quickjs 发布后,我十分兴奋并把它写成了 Go Bindings …… 使得可以在 Go 语言中使用 QuickJS 引擎。
目前支持的有限特性:
- 执行脚本
- 执行基于
[]byte
的字节码 - 将脚本编译为
[]byte
形式的字节码 - 简单的错误处理
- 从 JavaScript 中调用 Go 的函数
- 在 Go 中组装与操作 JavaScript 对象
目前仅在 MacOS 下测试可用,Linux 理论上可用,对于其他平台的支持,欢迎大家参与贡献!
更多关于Golang Go语言中go-quickjs:现在可以在 Golang Go语言中使用 QuickJS 引擎了的实战教程也可以访问 https://www.itying.com/category-94-b0.html
binding 是不是就是用 cgo 封装了下?
更多关于Golang Go语言中go-quickjs:现在可以在 Golang Go语言中使用 QuickJS 引擎了的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
用 c 就行了,cgo 还得再绑定一层
#2
#3
因为我们自己的 Go 项目有需求,所以才写这个东西。如果不用 cgo,还有其他更好的方法吗?
有的,我就重写过我司的几个 cgo 组件
另外 js 的 pure go 虚拟机:
https://github.com/dop251/goja
https://github.com/robertkrimen/otto
nodejs 和 go 直接挂起 rpc,两者提供接口,不同的语言只要保证接口参数一致而不是生搬硬套,而且使用 rpc 能够提供很强扩展性
rpc 能够抹平任何语言差距,哪怕以后你们扩展新的语言也能保证两者的通信交换
#5 我们现在就在用这些纯 Go 实现,但是编译和执行字节码是我们的未来需求。而且这些实现对 ECMAScript 的实现版本太低了,需要额外 babel 转译。
#6 这种方案在移动平台不适用,而且 NodeJS 有 ~15M,太臃肿,v8 也有 ~8M 左右
一口暴击
go 用于移动平台 是什么场景?
#9 #10 本来就是个满足我们项目需求的衍生小项目,没啥暴击不暴击的,脱离需求去讨论一个项目的意义本身就没有意义。
使用 场景当然是商业机密咯,整个 go-mobile 都是 cgo 实现的,难不成 go-mobile 也别用了?
大佬误会,我是表达惊异的意思
我还没学 go,这个题目我不太理解,go 语言能执行 js 代码吗?这也太强了吧?
#12 误解了,抱歉。
对其他人:
这个项目对大多数人来说应该就是个小玩具吧,但对于我们自己来说是刚需。希望大家看问题的角度能积极一点吧,打击别人不仅对自己没好处,对开源社区也没好处,嘴下留情吧。
#13 Go 语言是可以执行 JavaScript 代码,而且有很多种方法。我这个小项目只是其中一种方法而已。
我还想着 go 编译成 wasm 不就能和 js 交互了么?
#16 go 编译成 wasm 的话,就可以在浏览器中使用那些用 go 写的程序和库了。这个库是在非浏览器环境下使用 javascript 语言。这两个目的正好相反。
为啥不走 rpc ?
楼主的项目对性能要求严格吗
pc 用 nodejs,mobile 有 jsc 和 v8,这个使用场景在哪
😄看完全贴我已经猜到楼主的业务场景是啥了,牛逼啊
作为区块链的合约引擎?
关于Golang中go-quickjs以及QuickJS引擎的使用,以下是我的专业回复:
go-quickjs是一个为Go语言提供QuickJS引擎绑定的开源项目。QuickJS是一个轻量级且高效的JavaScript引擎,支持ES2020规范,而go-quickjs则使得开发者能够在Go应用中无缝集成JavaScript的执行能力。
go-quickjs的核心优势在于:
- 轻量级与高效:基于QuickJS引擎,go-quickjs本身非常轻量,同时QuickJS引擎的高效性能保证了go-quickjs在执行JavaScript脚本时的速度和效率。
- 易用性:go-quickjs提供了简洁的API,开发者可以快速上手,并在Go应用中集成JavaScript功能。
- 灵活性:支持脚本执行、字节码处理、异常处理以及Go与JavaScript的交互,满足多种开发需求。通过Go语言的CGO机制,go-quickjs能够直接调用QuickJS的底层API,实现Go与JavaScript的双向调用。
go-quickjs的应用场景广泛,包括但不限于嵌入式系统、服务器端脚本执行、跨语言开发等。它为Go语言开发者打开了一扇通往JavaScript世界的大门,无论是在资源受限的嵌入式系统中运行脚本,还是在服务器端动态执行代码,go-quickjs都能提供强大的支持。
总的来说,go-quickjs是一个值得关注和尝试的开源项目,它极大地扩展了Go应用的功能,为开发者带来了更多的便利和可能性。