go WebAssembly 简单介绍

go 1.11 增加了编译为 WebAssembly 的实验性功能。

WebAssembly 的主页

编译一个基本的go包

package main

import "fmt"

func main() {
    fmt.Println("Hello, WebAssembly!")
}

执行命令编译为 WebAssembly

$ env GOOS=js GOARCH=wasm go build -o main.wasm

复制文件到当前目录

$ cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" .

创建一个 html 文件,命名为 index.html。

<!doctype html>
<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>

然后就完成了,使用goexec启动一个简单的http服务器:

$ goexec 'http.ListenAndServe(":8080", http.FileServer(http.Dir(".")))'

最后从浏览器访问 http://localhost:8080/index.html,打开调试控制台,你可以看到输出。

有关与 DOM 交互查看
https://godoc.org/syscall/js

发表评论

电子邮件地址不会被公开。 必填项已用*标注