標籤:fatal pat 環境 example type director 編譯 ... mis
Golang WebAssembly 入門
Golang 在1.11版本中引入了 WebAssembly 支援,意味著以後可以用 go編寫可以在瀏覽器中啟動並執行程式,當然這個肯定也是要受瀏覽器沙箱環境約束的.
1. 瀏覽器中運行 Go1.1 code
package mainfunc main() { println("Hello, WebAssembly!")}
1.2 編譯
必須是 go1.11才行
GOARCH=wasm GOOS=js go build -o test.wasm main.go
1.3 運行
單獨的 wasm 檔案是無法直接啟動並執行,必須載入瀏覽器中.
mkdir testcp test.wasm testcp $GOROOT/misc/wasm/wasm_exec.{html,js} .
1.3.1 一個測試 http 伺服器
chrome 是不支援本地檔案中運行 wasm 的,所以必須有一個 http 伺服器
//http.gopackage mainimport ( "flag" "log" "net/http" "strings")var ( listen = flag.String("listen", ":8080", "listen address") dir = flag.String("dir", ".", "directory to serve"))func main() { flag.Parse() log.Printf("listening on %q...", *listen) log.Fatal(http.ListenAndServe(*listen, http.HandlerFunc(func(resp http.ResponseWriter, req *http.Request) { if strings.HasSuffix(req.URL.Path, ".wasm") { resp.Header().Set("content-type", "application/wasm") } http.FileServer(http.Dir(*dir)).ServeHTTP(resp, req) })))}
1.3.2 http.go
mv http.go testcd testgo run http.go
1.4 效果
在瀏覽器中開啟http://localhost:8080/wasm_exec.html,點擊 run 按鈕,可以在控制台看到 Hello, WebAssembly!字串
2. node中運行 wasm
這個更直接
node wasm_exec.js test.wasm
就可以在控制台看到Hello, WebAssembly!字串了.
3. 其他例子
在example中可以看到更多例子
3.1 bouncy
3.2 ranbow-mouse
會跟著滑鼠畫出彩虹圖案,挺好看的
3.3 bumpy
可以畫一些自訂的形狀,形狀不同,落地效果不同.球就會反彈,三角形就不會.不過都摔不壞,不會變形,這點不夠真實
用 go 寫 WebAssembly入門