WebAssembly on yksi nykyaikaisista teknologioista, jotka on suunniteltu useiden kielten käyttämiseen selaimessa Javascriptin yhteentoimivuudella.
WebAssembly (WASM) on alustasta riippumaton, binäärikäskymuoto pinopohjaisille virtuaalikoneen kannettava käännöskohde ohjelmointikielille, joita voidaan käyttää mahdollistavissa ympäristöissä (esim. web ja palvelin) sovellukset).
WASM: n avulla voit käyttää useita ohjelmointikieliä, mukaan lukien Go, selaimessasi ja hyödyntää kielen ominaisuuksia. Toimi myös Javascriptin kanssa verkossa.
WebAssemblyn käytön aloittaminen Gossa
Go tarjoaa ensiluokkaista tukea WebAssemblyn käyttämiselle Go-sovelluksissasi. Sinun tarvitsee vain tehdä muutama kokoonpano ja kääntää Go-koodi WebAssemblyksi.
Sinun on tehtävä muutamia määrityksiä, jotta voit siirtää Go-koodisi WebAssemblyyn. Sinun on vaihdettava Go-arkkitehtuuriasi GOARCH ympäristömuuttuja wasm ja Go-käyttöjärjestelmä GOOS muuttuja js.
Suorita tämä komento työhakemistosi päätteessä tehdäksesi nämä asetukset.
Aseta GOARCH=wasm GOOS=js
Seuraava vaihe on siirtää Go-koodisi WebAssemblyksi .wasm tiedosto. Suorita tämä komento siirtääksesi main.go tiedosto tiedostoon nimeltä lib.wasm
go build -o lib.wasm main.go
Kun suoritat komennon, löydät a lib.wasm työhakemistossasi.
Sinun on kopioitava Go-asennuksen mukana tullut WebAssembly-tiedosto työhakemistoosi, jotta WebAssembly-tiedosto voidaan suorittaa NodeJS: llä verkkosivulla.
cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" .
Komento kopioi wasm_exec.js tiedosto työhakemistoosi ja toimii sovelluksesi sisääntulopisteenä.
Nyt voit käyttää wasm_exec.js komentosarja WASM-tiedostojen suorittamiseksi Go and make -sovelluksella DOM API puhelut.
solmu wasm_exec.js main.wasm
Web-palvelimen käynnistäminen verkkosivuston isännöimiseksi
Lisää tämä Go-tekijöiden koodi HTML-tiedostoon työhakemistossasi luodaksesi WebAssembly-tietovirran instantiateStreaming menetelmä.
Tekijänoikeudet 2018 The Go Authors. Kaikki oikeudet pidätetään.
Tämän lähdekoodin käyttöä säätelee BSD-tyylinen
lisenssi, joka löytyy LICENSE-tiedostosta.
"utf-8" />Mene wasm
HTML-koodi on peräisin Go Authorsilta WebAssembly-streamin luomiseen, joka yhdistää Go-koodisi verkkosivulle.
Web-palvelimen käynnistäminen sivun suorittamiseksi
Tulet määritä palvelin http paketti. Tuo http paketti ja Hirsi paketti mahdollisten virheiden kirjaamiseksi konsoliin.
tuonti (
"Hirsi"
"net/http"
)
Voit määrittää muuttujat palvelimen osoitteelle ja niiden tiedostojen hakemistolle, jotka haluat palvella osoitteessa.
var (
serverAddr = ":8080"
hakemisto = "."
)
Voit käyttää Tiedosto palvelin menetelmä http paketti palvelemaan tiedostoja tietyssä hakemistossa. The Tiedosto palvelin menetelmä ottaa hakemiston ja palauttaa tiedostopalvelimen ilmentymän.
funcpää() {
serveFiles := http. Tiedostopalvelin (http. Ohjaus (hakemisto))
jos virhe := http. ListenAndServe (serverAddr, serveFiles); virhe! = nolla {
Hirsi. Fatalln (err)
}
}
Vuonna pää -funktiossa määritit tiedostopalvelimen ilmentymämuuttujan palvelemaan juurihakemiston tiedostoja. The KuunteleJaPalvele menetelmä palvelee määritetyn portin määritetyn hakemiston tiedostoja.
WebAssembly Functions in Go
Go tarjoaa toimintoja JS-toimintojen kutsumiseen ja vuorovaikutukseen DOM: n kanssa syscall/js paketti.
The js paketti tarjoaa pääsyn WebAssembly-isäntäympäristöihin js/wasm arkkitehtuuri. Sinun on määritettävä kehitysympäristösi GOARCH=wasm GOOS=js päästäksesi käsiksi ja käyttämään pakettia.
Voit käyttää paketin eri menetelmiä vuorovaikutuksessa verkkosivusi kanssa. Näin voit rekisteröidä toimintoja js paketti.
// funktion määritelmä
funcTulosta(tämä js. Arvo, i []js. Arvo)käyttöliittymä{} {
palata js. ValueOf (i[:])
}
The Tulosta toiminto rekisteröinnin yhteydessä takaisinsoittotoimintona tulostaa selainkonsolin toiminnolle välitetyt tiedot.
Voit rekisteröidä takaisinsoittotoimintoja Aseta menetelmä Maailmanlaajuinen menetelmä js paketti. The Aseta menetelmä ottaa funktion tunnisteen ja takaisinkutsufunktioinstanssin.
funcRegisterCallback Functions() {
js. Global().Set("Tulosta", js. FuncOf(Tulosta))
}
The RegisterCallback Functions menetelmä rekisteröi Tulosta toimii takaisinsoittotoimintona, jota voit käyttää selainkonsolissa.
WebAssembly on kokeellinen ominaisuus monilla kielillä, mukaan lukien Go
WebAssembly-ominaisuudet ovat suhteellisen uusia monille kielille, varsinkin kun kielestä tuli äskettäin W3C-standardi. The js paketti on kokeellinen, ja paketti on vapautettu Go-yhteensopivuuslupauksesta.