转到 WebAssembly
- 将您的 WebAssembly 代码编写到主函数中。
main.go - 跑步
./compile.sh - 打开 URL
localhost:8080并检查控制台输出
我认为很多人还没有意识到 WebAssembly 的出现给我们带来了多么巨大的可能性。
我们现在基本上可以将几乎任何语言(参见列表)编译成 WebAssembly。这意味着我们可以在客户端浏览器中运行的应用程序范围呈指数级增长!
例如,下面我将向您展示如何将您的 Go 代码编译成 WebAssembly 并在浏览器中原生运行。
让我们一步一步来!
准备一个要转换为 WebAssembly 的 Go 应用程序。请注意,您只能编译main包。如果您的代码不属于主包,请将其添加到主包中。
以下是我要整理的内容:
package main
import "fmt"
func main() {
fmt.Println("Hello world!")
}
经典的。
运行 go 命令将你的 Go 代码编译成 WASM。
GOOS=js GOARCH=wasm go build -o main.wasm
复制 glue JS 文件,即可在浏览器中执行编译后的 WASM 代码。该文件位于您的$GOROOT项目目录中。
cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" .
创建一个包含以下内容的HTML文件。请注意,我们包含了wasm.exec.js刚刚复制的文件。
<html>
<head>
<meta charset="utf-8"/>
<script src="wasm_exec.js"></script>
<script>
const go = new Go();
WebAssembly.instantiateStreaming(fetch("main.wasm"),
go.importObject).then((result) => {
go.run(result.instance);
});
</script>
</head>
<body></body>
</html>
现在你需要启动一个本地 Web 服务器,并通过它加载 HTML 文件。如果你不确定如何操作,可以使用 Go 语言快速完成。只需在终端中执行以下两条命令即可。
go get -u github.com/shurcooL/goexec
goexec 'http.ListenAndServe(`:8080`, http.FileServer(http.Dir(`.`)))'
如果一切顺利,您将能够导航localhost:8080并看到一个空白页面。现在打开开发者工具并检查控制台!
大获成功!
我还编写了一个小脚本,只需一条命令即可编译并启动服务器。
请查看以下代码库。
main.go./compile.shlocalhost:8080并检查控制台输出运行该命令后compile.sh,以上所有步骤都将被执行。