go-quickjs:现在可以在 Go 语言中使用 QuickJS 引擎了

2019-07-15 17:54:05 +08:00
 plqws

https://github.com/wspl/go-quickjs

自 quickjs 发布后,我十分兴奋并把它写成了 Go Bindings …… 使得可以在 Go 语言中使用 QuickJS 引擎。

目前支持的有限特性:

目前仅在 MacOS 下测试可用,Linux 理论上可用,对于其他平台的支持,欢迎大家参与贡献!

https://github.com/wspl/go-quickjs

6205 次点击
所在节点    Go 编程语言
23 条回复
AngelCriss
2019-07-15 17:58:45 +08:00
binding 是不是就是用 cgo 封装了下?
eslizn
2019-07-15 18:28:25 +08:00
MeteorCat
2019-07-15 18:31:24 +08:00
用 c 就行了,cgo 还得再绑定一层
plqws
2019-07-15 18:41:49 +08:00
@eslizn #2
@MeteorCat #3
因为我们自己的 Go 项目有需求,所以才写这个东西。如果不用 cgo,还有其他更好的方法吗?
eslizn
2019-07-15 18:46:27 +08:00
@plqws 有的,我就重写过我司的几个 cgo 组件
另外 js 的 pure go 虚拟机:
https://github.com/dop251/goja
https://github.com/robertkrimen/otto
MeteorCat
2019-07-15 18:47:13 +08:00
nodejs 和 go 直接挂起 rpc,两者提供接口,不同的语言只要保证接口参数一致而不是生搬硬套,而且使用 rpc 能够提供很强扩展性
MeteorCat
2019-07-15 18:48:42 +08:00
rpc 能够抹平任何语言差距,哪怕以后你们扩展新的语言也能保证两者的通信交换
plqws
2019-07-15 18:53:00 +08:00
@eslizn #5 我们现在就在用这些纯 Go 实现,但是编译和执行字节码是我们的未来需求。而且这些实现对 ECMAScript 的实现版本太低了,需要额外 babel 转译。

@MeteorCat #6 这种方案在移动平台不适用,而且 NodeJS 有 ~15M,太臃肿,v8 也有 ~8M 左右
Rorysky
2019-07-15 19:06:20 +08:00
一口暴击
Rorysky
2019-07-15 19:08:13 +08:00
go 用于移动平台 是什么场景?
plqws
2019-07-15 19:14:53 +08:00
@Rorysky #9 #10 本来就是个满足我们项目需求的衍生小项目,没啥暴击不暴击的,脱离需求去讨论一个项目的意义本身就没有意义。
使用 场景当然是商业机密咯,整个 go-mobile 都是 cgo 实现的,难不成 go-mobile 也别用了?
Rorysky
2019-07-15 19:21:16 +08:00
@plqws 大佬误会,我是表达惊异的意思
mamahaha
2019-07-15 19:25:18 +08:00
我还没学 go,这个题目我不太理解,go 语言能执行 js 代码吗?这也太强了吧?
plqws
2019-07-15 19:25:34 +08:00
@Rorysky #12 误解了,抱歉。
对其他人:
这个项目对大多数人来说应该就是个小玩具吧,但对于我们自己来说是刚需。希望大家看问题的角度能积极一点吧,打击别人不仅对自己没好处,对开源社区也没好处,嘴下留情吧。
plqws
2019-07-15 19:27:11 +08:00
@mamahaha #13 Go 语言是可以执行 JavaScript 代码,而且有很多种方法。我这个小项目只是其中一种方法而已。
Rorysky
2019-07-15 19:33:07 +08:00
@plqws 我还想着 go 编译成 wasm 不就能和 js 交互了么?
1981
2019-07-15 19:35:48 +08:00
plqws
2019-07-15 19:37:14 +08:00
@Rorysky #16 go 编译成 wasm 的话,就可以在浏览器中使用那些用 go 写的程序和库了。这个库是在非浏览器环境下使用 javascript 语言。这两个目的正好相反。
luozic
2019-07-15 22:43:44 +08:00
为啥不走 rpc ?
SPACELAN
2019-07-15 22:58:02 +08:00
楼主的项目对性能要求严格吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/583172

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX