WebAssembly on üks kaasaegsetest tehnoloogiatest, mis on loodud Javascripti koostalitlusvõimega brauseris rohkemate keelte käitamiseks.
WebAssembly (WASM) on platvormist sõltumatu binaarne käsuvorming pinupõhistele virtuaalmasinatele, mis on loodud kaasaskantav kompileerimise sihtmärk programmeerimiskeelte jaoks, mis töötavad lubavates keskkondades (nt veebis ja serveris rakendused).
WASM-iga saate oma brauseris käitada mitut programmeerimiskeelt, sealhulgas Go, ja kasutada keele funktsioone. Samuti tehke veebis Javascriptiga koostööd.
WebAssemblyga alustamine Go-s
Go pakub esmaklassilist tuge WebAssembly kasutamiseks teie Go rakendustes, peate tegema vaid mõned konfiguratsioonid ja kompileerima Go koodi WebAssemblysse.
Peate tegema mõned konfiguratsioonid, et oma Go kood WebAssemblysse üle kanda. Peate oma Go arhitektuuri muutma GOARCH keskkonna muutuja wasm ja Go operatsioonisüsteem GOOS muutuv kuni js.
Nende seadistuste tegemiseks käivitage see käsk oma töökataloogi terminalis.
Määra GOARCH=wasm GOOS=js
Järgmine samm on Go-koodi ülekandmine WebAssemblysse .wasm faili. Käivitage see käsk, et oma main.go faili nimega faili lib.wasm
go build -o lib.wasm main.go
Käsu käivitamisel leiate a lib.wasm oma töökataloogis.
Peate kopeerima Go installiga kaasas oleva WebAssembly faili oma töökataloogi, et käivitada WebAssembly fail koos NodeJS-iga veebilehel.
cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" .
Käsk kopeerib wasm_exec.js fail oma töökataloogi ja toimib teie rakenduse sisenemispunktina.
Nüüd saate kasutada wasm_exec.js skript WASM-failide käivitamiseks rakendusega Go and make DOM API kõned.
sõlm wasm_exec.js main.wasm
Veebiserveri käivitamine veebisaidi majutamiseks
Lisage see Go autorite kood oma töökataloogi HTML-faili, et luua WebAssembly andmevoog koos voogesitus meetod.
Autoriõigus 2018 The Go autorid. Kõik õigused kaitstud.
Selle lähtekoodi kasutamist reguleerib BSD-stiilis
litsents, mille leiate failist LICENSE.
"utf-8" />Mine wasm
HTML-kood pärineb Go Authorsilt WebAssembly voo loomiseks, mis ühendab teie Go koodi veebilehega.
Veebiserveri käivitamine lehe käivitamiseks
saad seadistage server rakendusega http pakett. Importige http pakett ja logi pakett võimalike vigade konsooli logimiseks.
importida (
"logi"
"net/http"
)
Saate deklareerida muutujad serveri aadressi ja failide kataloogi jaoks, mida soovite sellel aadressil esitada.
var (
serverAddr = ":8080"
kataloog = "."
)
Võite kasutada Failiserver meetod http pakett failide teenindamiseks määratud kataloogis. The Failiserver meetod võtab kataloogi sisse ja tagastab failiserveri eksemplari.
funcpeamine() {
serveFiles := http. Failiserver (http. Dir (kataloog))
kui viga := http. ListenAndServe (serverAddr, serveFiles); eks!= null {
logi. Fatalln (viga)
}
}
Aastal peamine funktsioon, deklareerisite juurkataloogis olevate failide teenindamiseks failiserveri eksemplari muutuja. The Kuula ja teeninda meetod teenindab määratud pordi määratud kataloogis olevaid faile.
WebAssembly funktsioonid Go-s
Go pakub funktsioone JS-i funktsioonide helistamiseks ja DOM-iga suhtlemiseks syscall/js pakett.
The js pakett pakub juurdepääsu WebAssembly hostikeskkondadele js/wasm arhitektuur. Peate oma arenduskeskkonna seadistama vastavalt GOARCH=wasm GOOS=js paketile juurde pääseda ja seda kasutada.
Saate oma veebilehega suhtlemiseks kasutada paketis olevaid erinevaid meetodeid. Siit saate teada, kuidas saate funktsioone registreerida js pakett.
// funktsiooni definitsioon
funcprintida(see js. Väärtus, i []js. väärtus)liides{} {
tagasi js. ValueOf (i[:])
}
The printida funktsioon registreerimisel tagasihelistamisfunktsioonina väljastab brauseri konsoolis funktsioonile edastatud andmed.
Saate registreerida tagasihelistamisfunktsioone rakendusega Määra meetod Globaalne meetod js pakett. The Määra meetod võtab funktsiooni identifikaatori ja tagasikutsumisfunktsiooni eksemplari.
funcRegistreeri tagasihelistamisfunktsioonid() {
js. Global().Set("printida", js. FuncOf(printida))
}
The Registreeri tagasihelistamisfunktsioonid meetod registreerib printida toimib tagasihelistamisfunktsioonina, mida saate kasutada brauseri konsoolis.
WebAssembly on eksperimentaalne funktsioon paljudes keeltes, sealhulgas Go
WebAssembly funktsioonid on paljudes keeltes suhteliselt uued, eriti kuna keelest sai hiljuti W3C standard. The js pakett on eksperimentaalne ja pakett on vabastatud Go ühilduvuslubadusest.