真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何使用golang生成wasm文件并在瀏覽器上執(zhí)行

這篇文章主要講解了“如何使用golang生成wasm文件并在瀏覽器上執(zhí)行”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“如何使用golang生成wasm文件并在瀏覽器上執(zhí)行”吧!

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的徐匯網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

webassembly是什么?

webassembly是可以支持在web瀏覽器或者v8等環(huán)境下的二進(jìn)制格式,想具體了解可以查看這個(gè)回答

開(kāi)始

需要先升級(jí)go到1.11版本

編寫需要編譯成wasm文件的go文件

// main.go

package main

func main() {

println("Hello, WebAssembly!")

}

執(zhí)行build命令

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

注意這個(gè)是在mac或者linux操作系統(tǒng)下執(zhí)行的命令,在windows下應(yīng)該設(shè)置環(huán)境變量再執(zhí)行編譯命令

$env:GOARCH="wasm";$env:GOOS="js";

go build -o test.wasm main.go

命令執(zhí)行完后,后生成test.wasm文件,這個(gè)就是可以在瀏覽器上運(yùn)行的二進(jìn)制文件

添加其他依賴

復(fù)制$(go env GOROOT)/misc/wasm/下的wasm_exec.html和wasm_exec.js兩個(gè)文件到當(dāng)前目錄

搭建web服務(wù)器

// test.go

package main

import (

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

})))

}

運(yùn)行web服務(wù)

go run test.go

測(cè)試

在瀏覽器中打開(kāi)http://localhost:8080/wasm_exec.html,點(diǎn)擊頁(yè)面中的run按鈕,即可看到控制臺(tái)打印Hello, WebAssembly!

這樣我們就已經(jīng)可以使用go編寫一個(gè)可以運(yùn)行在瀏覽器的程序了

如何使用js

使用go的js庫(kù)syscall/js

// main.go

package main

import "syscall/js"

func sum(args []js.Value) {

var sum int

for _, val := range args {

sum += val.Int()

}

println(sum)

}

func registerCallbacks() {

js.Global().Set("sum", js.NewCallback(sum))

}

func main() {

c := make(chan struct{}, 0)

println("Hello, WebAssembly!")

registerCallbacks()

<-c

}

重新編譯后,刷新頁(yè)面,點(diǎn)擊run按鈕,就會(huì)為window對(duì)象掛載一個(gè)sum函數(shù),在控制臺(tái)可以調(diào)用

操作dom

在go中可以獲取window對(duì)象來(lái)達(dá)到操作dom的效果,做一個(gè)計(jì)算器

感謝各位的閱讀,以上就是“如何使用golang生成wasm文件并在瀏覽器上執(zhí)行”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)如何使用golang生成wasm文件并在瀏覽器上執(zhí)行這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


網(wǎng)頁(yè)題目:如何使用golang生成wasm文件并在瀏覽器上執(zhí)行
文章出自:http://weahome.cn/article/jjeied.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部