クイックチュートリアル:書き込み移動、WASMを実行!


go 1.11がリリースされる前に、実験的なポートをwebassembly ( WASM for short )に紹介します.
次の手順を実行します.
  • セットアップgo1.11beta3
  • コンパイルはWASM
  • HTMLとJavaScriptを使用してWASMを読み込む
  • Webサーバのスピンアップ
  • ウェブサイトを開く!

  • ステップ1:セットアップgo1.11beta3私たちはまだベータ版(8月の予定です)バージョン1.11行く必要があります!GOはオープンソースなので、代わりに最新のベータ版をダウンロードすることができます.
    https://github.com/golang/go/releases/tag/go1.11beta3
    $ go get golang.org/dl/go1.11beta3
    $ go1.11beta3 download
    # => Success. You may now run 'go1.11beta3'
    

    ステップ2 :コンパイルはWASMに移動します
    我々は今GOを書くことができます!その計画は古典を印刷することだhello, Go/WASM! しかし、ブラウザの中で-開発コンソールで.
    // main.go
    package main
    
    import "fmt"
    
    func main() {
        fmt.Println("hello, Go/WASM!")
    }
    
    GOからWASMにプログラムをコンパイルするにはgo build .
    注意:デフォルトの環境ではなく、Web用のGo - to - compileを指示する必要がありますコンピュータ.ですから、環境変数を設定する必要がありますGOOS=js and GOARCH=wasm Webを対象とする.
    $ GOOS=js GOARCH=wasm go1.11beta3 build -o test.wasm main.go
    

    ステップ3:WASMを読み込むためにHTMLとJavaScriptを使用します
    このステップは難しくない囲碁チームは私たちが実験するファイルを用意しました.
    # -s == silent mode
    # -O == output mode
    $ curl -sO https://raw.githubusercontent.com/golang/go/master/misc/wasm/wasm_exec.html
    $ curl -sO https://raw.githubusercontent.com/golang/go/master/misc/wasm/wasm_exec.js
    

    ステップ4:Webサーバーをスピン
    今、我々はいくつかの静的資産を提供する簡単なWebサーバーをスピンする必要があります.これはほんの数行のコードです.
    // server.go
    package main
    
    import (
        "flag"
        "log"
        "net/http"
    )
    
    func main() {
        port := flag.String("port", "8000", "port")
        flag.Parse()
        log.Fatal(http.ListenAndServe(":"+*port, http.FileServer(http.Dir("."))))
    }
    
    
    始めましょう!乾杯!
    $ go1.11beta3 run server.go
    
    # or to run on a different port:
    # $ go1.11beta3 run -port=8080 server.go
    

    ステップ5:オープンウェブサイト!
    オープンlocalhost:8000/wasm_exec.html !
    注:“実行”ボタン(左上に)コンパイルされたwasmが読み込まれるまで無効に表示されます.
    ボタンを押すと、コンソールを開き、ボタンを押します!
    参照hello, Go/WASM! ??
    おめでとう!🎉
    あなたは、コンパイル、ロード、およびWASMを介して行くプログラムを実行している!
    本当ですか.
    確認してくださいContent-Type is application/wasm のレスポンスヘッダtest.wasm ? ;)

    謝辞
    翻訳を勧めてくれてありがとうmy article 英語にこの記事をレビュー.

    参考文献
  • サクッと Go → WebAssembly を試す(Original article in Japanese)
  • Go and wasm: generating and executing wasm with Go - Gopher Academy Blog Community Contributed Go Articles and Tutorials