WebAssembly je ena izmed sodobnih tehnologij, zasnovanih za izvajanje več jezikov v brskalniku z interoperabilnostjo Javascript.
WebAssembly (WASM) je od platforme neodvisen binarni format navodil za virtualne stroje, ki temeljijo na skladu, zasnovan kot prenosni cilj prevajanja za programske jezike za izvajanje v omogočitvenih okoljih (tj. splet in strežnik aplikacije).
Z WASM lahko v brskalniku izvajate več programskih jezikov, vključno z Go, in izkoristite funkcije jezika. Prav tako sodelujte z Javascriptom v spletu.
Kako začeti uporabljati WebAssembly v Go
Go zagotavlja prvovrstno podporo za uporabo WebAssembly v vaših aplikacijah Go, narediti morate le nekaj konfiguracij in prevesti kodo Go v WebAssembly.
Za prenos kode Go v WebAssembly boste morali narediti nekaj konfiguracij. Spremeniti boste morali svojo arhitekturo Go GOARCH spremenljivka okolja za wasm in operacijski sistem Go GOOS spremenljivka do js.
Zaženite ta ukaz v terminalu vašega delovnega imenika, da naredite te konfiguracije.
Nastavite GOARCH=wasm GOOS=js
Naslednji korak je prevajanje kode Go v WebAssembly .wasm mapa. Zaženite ta ukaz, da prevedete svoj main.go datoteko v datoteko z imenom lib.wasm
go build -o lib.wasm main.go
Ko zaženete ukaz, boste našli a lib.wasm v vašem delovnem imeniku.
Datoteko WebAssembly, ki spremlja vašo namestitev Go, morate kopirati v svoj delovni imenik, da datoteko WebAssembly izvedete z NodeJS na spletni strani.
cp "$(pojdi env GOROOT)/misc/wasm/wasm_exec.js" .
Ukaz kopira wasm_exec.js datoteko v vaš delovni imenik in služi kot vstopna točka v vašo aplikacijo.
Zdaj lahko uporabite wasm_exec.js skript za izvajanje datotek WASM s programom Go and make DOM API klice.
vozlišče wasm_exec.js main.wasm
Zagon spletnega strežnika za gostovanje spletnega mesta
Dodajte to kodo avtorjev Go v datoteko HTML v svojem delovnem imeniku, da ustvarite tok podatkov WebAssembly z instantiateStreaming metoda.
Avtorske pravice 2018 The Go Authors. Vse pravice pridržane.
Uporabo te izvorne kode ureja licenca
v slogu BSD, ki jo najdete v datoteki LICENSE.
"utf-8" />Pojdi wasm
Koda HTML je od avtorjev Go za ustvarjanje toka WebAssembly, ki vašo kodo Go poveže s spletno stranjo.
Zagon spletnega strežnika za zagon strani
Boste nastavite strežnik z http paket. Uvozite http paket in dnevnik paket za beleženje morebitnih napak v konzolo.
uvoz (
"dnevnik"
"net/http"
)
Lahko deklarirate spremenljivke za naslov strežnika in imenik datotek, ki jih želite streči na naslovu.
var (
naslov strežnika = ":8080"
imenik = "."
)
Lahko uporabite FileServer metoda http paket za streženje datotek v določenem imeniku. The FileServer metoda sprejme imenik in vrne primerek datotečnega strežnika.
funkglavni() {
serveFiles := http. Datotečni strežnik (http. Dir (imenik))
če napaka := http. ListenAndServe (serverAddr, serveFiles); napaka!= nič {
dnevnik. Fatalln (napaka)
}
}
V glavni funkcijo, ste deklarirali spremenljivko primerka datotečnega strežnika za streženje datotek v korenskem imeniku. The ListenAndServe metoda streže datoteke v podanem imeniku na podanih vratih.
Funkcije WebAssembly v Go
Go ponuja funkcionalnost za klicanje funkcij JS in interakcijo z DOM v syscall/js paket.
The js omogoča dostop do gostiteljskih okolij WebAssembly na js/wasm arhitektura. Svoje razvojno okolje boste morali nastaviti na GOARCH=wasm GOOS=js za dostop in uporabo paketa.
Za interakcijo s svojo spletno stranjo lahko uporabite različne metode v paketu. Tukaj je opisano, kako lahko registrirate funkcije z js paket.
// definicija funkcije
funktiskanje(ta js. Vrednost, i []js. vrednost)vmesnik{} {
vrnitev js. ValueOf (i[:])
}
The tiskanje funkcija ob registraciji kot funkcija povratnega klica bo izpisala podatke, posredovane funkciji v konzoli brskalnika.
Funkcije povratnega klica lahko registrirate z Set metoda Globalno metoda js paket. The Set metoda sprejme identifikator funkcije in primerek funkcije povratnega klica.
funkRegisterCallbackFunctions() {
js. Global().Set("tisk", js. FuncOf(tiskanje))
}
The RegisterCallbackFunctions metoda registrira tiskanje deluje kot funkcija povratnega klica, ki jo lahko uporabite v konzoli brskalnika.
WebAssembly je eksperimentalna funkcija v številnih jezikih, vključno z Go
Funkcije WebAssembly so razmeroma nove za številne jezike, zlasti ker je jezik nedavno postal standard W3C. The js paket je poskusni in je izvzet iz obljube o združljivosti Go.