七叶笔记 » golang编程 » Golang WebAssembly 尝试

Golang WebAssembly 尝试

偶尔看到golang能够直接编译成webassembly,尝试了把,参照:

golang是版本1.11试验性的支持了,1.12版本做了点改善,1.13 版本有做了点改善,这边实验的环境是”go version go1.13.4 linux/amd64″


编写golang代码和编译

golang的代码,就是个通常看到的”hello world”

 package main

 import  "fmt"

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

编译golang 代码

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

构建运行环境

本地浏览器并不是能直接执行这个文件,需要构建下运行环境

拷贝WebAssembly的执行javascript文件

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

添加index. html 用于执行javascript

 <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>  

目录下文件列表如下

 .
├── index.html
├── main.go
├── main.wasm
└── wasm_exec.js  

运行web 服务

运行一个 web服务

 # install goexec: 
go get -u github.com/shurcooL/goexec
# start http service
goexec 'http.ListenAndServe(`:8080`, http.FileServer(http.Dir(`.`)))'  

网页访问ip:8080

网页上是什么也没有了,你需要打开开发者模式,在console里面才能看到Hello, WebAssembly!

相关文章