用Golang运行JavaScript的实现示例

本文介绍了如何在Golang中使用goja库运行JavaScript代码,包括设置全局变量、定义函数、交互及实现简单的require功能。示例展示了Golang与JavaScript之间的数据转换和交互,帮助理解JavaScript引擎与执行环境的界限。
摘要由CSDN通过智能技术生成

C++太麻烦(难)了,想要盘弄一下V8实在是有些费劲,但是Golang社区出了几个Javascript引擎,要尝试在别的语言中如何集成Javascript,是个不错的选择。以下选了github.com/dop251/goja 来做例子。

Hello world

照着仓库的Readme,来一个:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

package main

 

import (

 "fmt"

 js "github.com/dop251/goja"

)

 

func main() {

 vm := js.New() // 创建engine实例

 r, _ := vm.RunString(`

  1 + 1

 `) // 执行javascript代码

 v, _ : = r.Export().(int64) // 将执行的结果转换为Golang对应的类型

 fmt.Println(r)

}

这个例子展示了最基本的能力,给定一段Javascript的代码文本,它能执行得到一个结果,并且能得到执行结果的宿主语言的表示形式。

交互

Javascript和Golang之间的交互分成两个方面:Golang向Javascript引擎中注入一些上下文,例如注册一些全局函数供Javascript使用,创建一个对象等;Golang从Javascript引擎中读取一些上下文,例如一个计算过程的计算结果。先看第一类。

常用的手段是,通过Runtime类型提供的Set方法在全局注册一个变量,例如

?

1

2

3

4

5

...

rts := js.Ne

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值