我有一个Go程序,它使用一些json文件(比如15)来存储数据。我想把它编译成一个WebAssembly文件。
我该怎么做?
注意:我知道我可以将这些json值从我的JS代码传递给WASM,但是如果我可以有效地将它们与WASM捆绑在一起,我不希望这样做。
编辑:最后,我们尝试了https://pkg.go.dev/embed,正如NobbyNobbs提到的,它的工作完美。
我有一个Go程序,它使用一些json文件(比如15)来存储数据。我想把它编译成一个WebAssembly文件。
我该怎么做?
注意:我知道我可以将这些json值从我的JS代码传递给WASM,但是如果我可以有效地将它们与WASM捆绑在一起,我不希望这样做。
编辑:最后,我们尝试了https://pkg.go.dev/embed,正如NobbyNobbs提到的,它的工作完美。
1条答案
按热度按时间iszxjhcz1#
如果你想把任何类型的文件/目录与编译后的代码捆绑在一起(* 比如binary/wasm*),有一个很棒的Golang库packr。它很容易使用,当你把源代码编译成二进制或webassembly时,packr会加载文件/目录,并像以前一样工作。
这里我在项目的根目录中使用***
main.go
***。和一个存储json数据的目录(如***/jsondata/mydata.json
***)主.开始
/jsondata/我的数据.json
而不是运行使用
go run main.go
的代码。如果您将其编译为二进制,json***文件将附带二进制代码go build main.go
如果您将其编译为***wasm,则该文件夹的行为将与
GOOS=js GOARCH=wasm go build -o main.wasm main.go
相同第二种方法(使用“embed”)
使用标准库中
embed
库。这里我使用***
main.go
在项目的根目录中。并在同一目录中创建一个文件(如/sample.json
***)主.开始
/示例.json
而不是运行使用
go run main.go
的代码。如果您将其编译为二进制,json***文件将附带二进制代码go build main.go
如果您将其编译为***wasm,则该文件夹的行为将与
GOOS=js GOARCH=wasm go build -o main.wasm main.go
相同