Golang WASM Demo
Golang 1.11 加入了对 WebAssembly 的支持,以下会测试并运行一个简单的 Demo。
- MacOS 10.13.6
- Golang 1.11
- Chrome 68 (64-bit)
- 编写测试代码并编译为 WASM 二进制代码
- 编写 WebServer 代码用于正确加载本地 WASM 文件
- 使用 Golang 编写好的 HTML 和 JavaScript 加载 WASM
- 使用浏览器测试代码
编译测试代码
1// 测试代码 main.go
2package main
3
4import "fmt"
5
6func main() {
7 fmt.Println("hello, Go/WASM!")
8}
1# 编译命令 修改编译好的文件名称为 test.wasm 以便被自带的 HTML 文件正确加载
2$ GOOS=js GOARCH=wasm go build -o test.wasm main.go
编写 WebServer 代码
1// server.go
2package main
3
4import (
5 "flag"
6 "log"
7 "net/http"
8)
9
10func main() {
11 port := flag.String("port", "8000", "port")
12 flag.Parse()
13 log.Fatal(http.ListenAndServe(":"+*port, http.FileServer(http.Dir("."))))
14}
拷贝 Golang 自带的测试文件
1# /usr/local/go 是 Golang 根目录 (GOROOT)
2$ cp /usr/local/go/misc/wasm/wasm_exec.{html,js} ./
在浏览器测试代码
1# 启动 WebServer
2$ go run server.go
打开测试网页 localhost:8000/wasm_exec.html
,会看到一个 run
按钮
点击按钮,在浏览器控制台将会看到 hello, Go/WASM!
字符串,代表代码正确运行