コンパイルはwebassembly (ブラウザ版)へ移動します.


導入


私は、多くの人々が我々がwebassemblyの出現で与えられた大きな可能性をまだ理解したと思いません.
私たちは、現在ほとんどすべてをコンパイルすることができますsee list ) への言語.これは、クライアント側でブラウザで実行できるアプリケーションの範囲が指数関数的に成長したことを意味します!
たとえば、あなたのGoコードをどのようにして、それをWebassemblyにコンパイルし、ブラウザでネイティブに実行するかを以下に示します.

🍖 & 🥔


一歩一歩しましょう

  • WebBassemblyに変換するGoアプリケーションを準備します.のみコンパイルすることができますmain パッケージ.コードがメインパッケージの一部でない場合は、そうしてください.
    ここでコンパイルする予定です.
    package main
    
    import "fmt"
    
    func main() {
        fmt.Println("Hello world!")
    }
    
    クラシック.

  • WORMコードをコンパイルするためにgoコマンドを実行します.
    GOOS=js GOARCH=wasm go build -o main.wasm
    

  • ブラウザでコンパイルされたWAMMを実行できるようにする糊jsファイルをコピーします.これはあなたの中にあるファイルです$GOROOT ディレクトリ.
    cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" .
    

  • 次のコンテンツでHTMLファイルを作成します.我々は、含まれていることに注意してくださいwasm.exec.js コピーしたファイル.
    <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>
    

  • 今、あなたはローカルWebサーバーをスピンし、それを介してHTMLファイルをロードする必要があります.どのようにこれを行うにしていない場合は、それを行うには簡単な方法があります.端末で次の2つのコマンドを実行します.
    go get -u github.com/shurcooL/goexec
    goexec 'http.ListenAndServe(`:8080`, http.FileServer(http.Dir(`.`)))'
    
  • すべてがうまくいけば移動することができますlocalhost:8080 と空白のページが表示されます.今開発者ツールを開き、コンソールをチェック!
    大成功!

    プロセスの自動化


    私はまた、1つのコマンドでサーバーをコンパイルして起動させる小さなスクリプトをまとめました.
    下のリポジトリをチェックしてください.

    ドレイ131 / webassemblyに移動する


    コンパイルは


    webassemblyに移動する

  • WebBassemblyコードをmain.go
  • ラン./compile.sh
  • オープンURLlocalhost:8080 そして、出力用のコンソールをチェックします
  • View on GitHub
    走ることでcompile.sh , 上記のすべてのステップが実行されます.

    ビデオ