用 go 寫 WebAssembly入門

來源:互聯網
上載者:User

標籤: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入門

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.