WebAssembly ir viena no modernajām tehnoloģijām, kas paredzēta vairāku valodu palaišanai pārlūkprogrammā ar Javascript savietojamību.
WebAssembly (WASM) ir no platformas neatkarīgs, binārs instrukciju formāts uz steku balstītām virtuālajām mašīnām, kas izstrādātas kā pārnēsājams kompilācijas mērķis programmēšanas valodām, lai tās darbotos iespējojošās vidēs (t.i., tīmeklī un serverī lietotnes).
Izmantojot WASM, pārlūkprogrammā varat palaist vairākas programmēšanas valodas, tostarp Go, un izmantot šīs valodas funkcijas. Tāpat sadarbojieties ar Javascript tīmeklī.
Darba sākšana ar WebAssembly programmā Go
Go nodrošina pirmšķirīgu atbalstu WebAssembly lietošanai jūsu Go lietojumprogrammās, jums ir jāveic tikai dažas konfigurācijas un jāapkopo Go kods WebAssembly.
Jums būs jāveic dažas konfigurācijas, lai pārsūtītu savu Go kodu WebAssembly. Jums būs jāmaina sava Go arhitektūra GOARCH vides mainīgais uz wasm un Go operētājsistēmu GOOS mainīgs uz js.
Palaidiet šo komandu sava darba direktorija terminālī, lai veiktu šīs konfigurācijas.
Iestatiet GOARCH=wasm GOOS=js
Nākamais solis ir pārsūtīt Go kodu WebAssembly .wasm failu. Palaidiet šo komandu, lai pārsūtītu savu galvenais.go failu uz failu ar nosaukumu lib.wasm
go build -o lib.wasm main.go
Palaižot komandu, jūs atradīsit a lib.wasm savā darba direktorijā.
Lai tīmekļa lapā izpildītu WebAssembly failu ar NodeJS, jums ir jākopē Go instalācijai pievienotais WebAssembly fails savā darba direktorijā.
cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" .
Komanda kopē wasm_exec.js failu savā darba direktorijā un kalpo kā ieejas punkts jūsu lietojumprogrammai.
Tagad varat izmantot wasm_exec.js skripts, lai izpildītu savus WASM failus, izmantojot Go and make DOM API zvani.
mezgls wasm_exec.js main.wasm
Tīmekļa servera palaišana vietnes mitināšanai
Pievienojiet šo kodu no Go autoriem HTML failam savā darba direktorijā, lai izveidotu WebAssembly datu straumi ar instantiateStreaming metodi.
Autortiesības 2018 The Go autori. Visas tiesības paturētas.
Šī pirmkoda izmantošanu regulē BSD stila
licence, kas atrodama failā LICENSE.
"utf-8" />Iet wasm
HTML kods ir no Go Authors, lai izveidotu WebAssembly straumi, kas savieno jūsu Go kodu ar tīmekļa lapu.
Web servera palaišana lapas palaišanai
Jūs to darīsit iestatiet serveri ar http iepakojums. Importēt http iepakojums un žurnāls pakotne iespējamo kļūdu reģistrēšanai konsolē.
imports (
"baļķis"
"net/http"
)
Varat deklarēt mainīgos lielumus servera adresei un to failu direktorijai, kurus vēlaties apkalpot šajā adresē.
var (
serverAddr = ":8080"
direktorijs = "."
)
Jūs varat izmantot Failu serveris metode http pakotni, lai apkalpotu failus noteiktā direktorijā. The Failu serveris metode aizņem direktoriju un atgriež failu servera gadījumu.
funcgalvenais() {
serveFiles := http. Failu serveris (http. Direktors (direktorijs))
ja kļūda := http. ListenAndServe (serverAddr, serveFiles); kļūda! = nulle {
žurnāls. Fatalln (kļūda)
}
}
Iekš galvenais funkciju, jūs deklarējāt failu servera instances mainīgo, lai apkalpotu failus saknes direktorijā. The Klausieties un kalpojiet metode apkalpo failus norādītajā direktorijā norādītajā portā.
WebAssembly funkcijas Go
Go nodrošina funkcionalitāti JS funkciju izsaukšanai un mijiedarbībai ar DOM syscall/js iepakojums.
The js pakotne nodrošina piekļuvi WebAssembly resursdatora vidēm uz js/wasm arhitektūra. Jums būs jāiestata izstrādes vide atbilstoši GOARCH=wasm GOOS=js lai piekļūtu pakotnei un to izmantotu.
Varat izmantot dažādas pakotnē esošās metodes, lai mijiedarbotos ar savu tīmekļa lapu. Lūk, kā varat reģistrēt funkcijas ar js iepakojums.
// funkcijas definīcija
funcdrukāt(šis js. Vērtība, i []js. Vērtība)saskarne{} {
atgriezties js. ValueOf (i[:])
}
The drukāt funkcija reģistrācijai kā atzvanīšanas funkcija izvadīs pārlūkprogrammas konsoles funkcijai nodotos datus.
Varat reģistrēt atzvanīšanas funkcijas, izmantojot Iestatīt metode Globāli metode js iepakojums. The Iestatīt metode ņem funkcijas identifikatoru un atzvanīšanas funkcijas gadījumu.
funcReģistrētAtzvanīšanas funkcijas() {
js. Global().Set("drukāt", js. FuncOf(drukāt))
}
The ReģistrētAtzvanīšanas funkcijas metode reģistrē drukāt darbojas kā atzvanīšanas funkcija, ko varat izmantot pārlūkprogrammas konsolē.
WebAssembly ir eksperimentāla funkcija daudzās valodās, tostarp Go
WebAssembly līdzekļi ir salīdzinoši jauni daudzās valodās, jo īpaši tāpēc, ka valoda nesen kļuva par W3C standartu. The js pakotne ir eksperimentāla, un pakotne ir atbrīvota no Go saderības solījuma.