Bralci, kot ste vi, pomagajo podpirati MUO. Ko opravite nakup prek povezav na našem spletnem mestu, lahko zaslužimo partnersko provizijo. Preberi več.

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.

instagram viewer

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.