„WebAssembly“ yra viena iš šiuolaikinių technologijų, skirtų naudoti daugiau kalbų naršyklėje su „Javascript“ sąveika.
WebAssembly (WASM) yra nuo platformos nepriklausomas dvejetainis instrukcijų formatas, skirtas kamino pagrindu veikiančioms virtualioms mašinoms, sukurtoms kaip nešiojamas kompiliavimo taikinys, skirtas programavimo kalboms veikti įgalinančiose aplinkose (t. y. žiniatinklyje ir serveryje programėlės).
Naudodami WASM savo naršyklėje galite paleisti kelias programavimo kalbas, įskaitant Go, ir panaudoti kalbos funkcijas. Be to, sąveikaukite su „Javascript“ žiniatinklyje.
Darbo su WebAssembly in Go pradžia
„Go“ teikia aukščiausios klasės palaikymą naudojant „WebAssembly“ jūsų „Go“ programose. Jums tereikia atlikti keletą konfigūracijų ir sukompiliuoti „Go“ kodą į „WebAssembly“.
Norėdami perkelti „Go“ kodą į „WebAssembly“, turėsite atlikti keletą konfigūracijų. Turėsite pakeisti „Go“ architektūrą
GOARCHAS aplinkos kintamasis į wasm ir Go operacinė sistema GOOS kintamasis į js.Norėdami atlikti šias konfigūracijas, paleiskite šią komandą savo darbo katalogo terminale.
Nustatykite GOARCH=wasm GOOS=js
Kitas žingsnis yra perkelti savo Go kodą į WebAssembly .wasm failą. Vykdykite šią komandą, kad perkeltumėte savo pagrindinis.go failą į failą pavadinimu lib.wasm
go build -o lib.wasm main.go
Vykdydami komandą rasite a lib.wasm savo darbo kataloge.
Turite nukopijuoti „WebAssembly“ failą, esantį kartu su „Go“ diegimu, į savo darbo katalogą, kad „WebAssembly“ failas būtų paleistas su „NodeJS“ tinklalapyje.
cp „$(go env GOROOT)/misc/wasm/wasm_exec.js“ .
Komanda nukopijuoja wasm_exec.js failą į savo darbo katalogą ir yra jūsų programos įėjimo taškas.
Dabar galite naudoti wasm_exec.js scenarijų, kad paleistumėte WASM failus naudodami „Go and make“. DOM API skambučių.
mazgas wasm_exec.js main.wasm
Web serverio paleidimas svetainei priglobti
Pridėkite šį kodą iš Go autorių į HTML failą savo darbo kataloge, kad sukurtumėte WebAssembly duomenų srautą su momentinis srautinis perdavimas metodas.
Autorių teisės 2018 m. „The Go Authors“. Visos teisės saugomos.
Šio šaltinio kodo naudojimą reglamentuoja BSD stiliaus
licencija, kurią galima rasti faile LICENSE.
"utf-8" />Eik wasm
HTML kodas yra iš „Go Authors“, skirtas sukurti „WebAssembly“ srautą, kuris sujungia jūsų „Go“ kodą su tinklalapiu.
Žiniatinklio serverio paleidimas puslapio paleidimui
Jūs padarysite nustatykite serverį naudodami http paketą. Importuoti http paketą ir žurnalas paketas galimų klaidų registravimui konsolėje.
importuoti (
"rąstas"
"net/http"
)
Galite deklaruoti serverio adreso ir failų, kuriuos norite pateikti šiuo adresu, katalogo kintamuosius.
var (
serverAddr = ":8080"
katalogas = "."
)
Galite naudoti Failų serveris metodas http paketą, skirtą failams aptarnauti nurodytame kataloge. The Failų serveris metodas paima katalogą ir grąžina failų serverio egzempliorių.
funcpagrindinis() {
serveFiles := http. Failų serveris (http. Vadovas (katalogas))
jeigu klaida := http. ListenAndServe (serverAddr, serveFiles); klysta! = nulis {
žurnalas. Fatalln (klysta)
}
}
Viduje pagrindinis funkciją, paskelbėte failų serverio egzempliorių kintamąjį, kuris aptarnautų failus šakniniame kataloge. The KlausykIr Tarnaukite metodas aptarnauja failus nurodytame kataloge nurodytame prievade.
WebAssembly funkcijos Go
„Go“ suteikia galimybę iškviesti JS funkcijas ir sąveikauti su DOM syscall/js paketą.
The js paketas suteikia prieigą prie „WebAssembly“ prieglobos aplinkų js/wasm architektūra. Kūrimo aplinka turės būti nustatyta taip GOARCH=wasm GOOS=js prieiti prie paketo ir juo naudotis.
Norėdami sąveikauti su savo tinklalapiu, galite naudoti įvairius pakete esančius metodus. Štai kaip galite užregistruoti funkcijas su js paketą.
// funkcijos apibrėžimas
funcspausdinti(šis js. Vertė, i []js. vertė)sąsaja{} {
grąžinti js. ValueOf (i[:])
}
The spausdinti funkcija registruojantis kaip atgalinio skambinimo funkcija išves duomenis, perduodamus funkcijai naršyklės konsolėje.
Galite užregistruoti perskambinimo funkcijas naudodami Nustatyti metodas Pasaulinis metodas js paketą. The Nustatyti metodas paima funkcijos identifikatorių ir atšaukimo funkcijos egzempliorių.
funcRegistruokis atgalinio skambučio funkcijas() {
js. Global().Set("spausdinti", js. FuncOf(spausdinti))
}
The Registruokis atgalinio skambučio funkcijas metodas registruoja spausdinti veikia kaip atgalinio ryšio funkcija, kurią galite naudoti naršyklės konsolėje.
WebAssembly yra eksperimentinė funkcija daugeliu kalbų, įskaitant Go
WebAssembly funkcijos yra palyginti naujos daugelyje kalbų, ypač todėl, kad kalba neseniai tapo W3C standartu. The js paketas yra eksperimentinis, o paketui netaikomas „Go“ suderinamumo pažadas.