Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

WebAssembly je jedna z moderných technológií navrhnutá na spustenie viacerých jazykov v prehliadači s interoperabilitou Javascriptu.

WebAssembly (WASM) je binárny formát inštrukcií nezávislý na platforme pre virtuálne stroje založené na zásobníkoch navrhnutý ako prenosný cieľ kompilácie pre programovacie jazyky, ktoré sa majú spúšťať v prostrediach umožňujúcich prevádzku (t. j. web a server). aplikácie).

Pomocou WASM môžete vo svojom prehliadači spustiť niekoľko programovacích jazykov vrátane Go a využiť funkcie tohto jazyka. Spolupracujte aj s Javascriptom na webe.

Začíname s WebAssembly v Go

Go poskytuje prvotriednu podporu pre používanie WebAssembly vo vašich aplikáciách Go, stačí vykonať niekoľko konfigurácií a skompilovať kód Go do WebAssembly.

Na prenos kódu Go do WebAssembly budete musieť vykonať niekoľko konfigurácií. Budete musieť zmeniť architektúru Go GOARCH prostredie premenné na wasm a Go operačný systém GOOS premenlivý na js.

instagram viewer

Ak chcete vykonať tieto konfigurácie, spustite tento príkaz v termináli vášho pracovného adresára.

Nastavte GOARCH=wasm GOOS=js 

Ďalším krokom je transpilácia vášho Go kódu do WebAssembly .wam súbor. Spustite tento príkaz na transpiláciu main.go súbor do súboru s názvom lib.wasm

go build -o lib.wasm main.go

Po spustení príkazu nájdete a lib.wasm vo vašom pracovnom adresári.

Ak chcete spustiť súbor WebAssembly s NodeJS na webovej stránke, musíte skopírovať súbor WebAssembly sprevádzajúci vašu inštaláciu Go do vášho pracovného adresára.

cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" .

Príkaz skopíruje súbor wasm_exec.js súbor do vášho pracovného adresára a slúži ako vstupný bod do vašej aplikácie.

Teraz môžete použiť wasm_exec.js skript na spustenie vašich súborov WASM pomocou Go and make DOM API hovory.

uzol wasm_exec.js main.wasm

Spustenie webového servera na hosťovanie webovej stránky

Pridajte tento kód od autorov Go do súboru HTML vo svojom pracovnom adresári, aby ste vytvorili inštanciu dátového toku WebAssembly s instantiateStreaming metóda.



Autorské práva 2018 The Go Authors. Všetky práva vyhradené.
Používanie tohto zdrojového kódu sa riadi
licenciou v štýle BSD, ktorú nájdete v súbore LICENSE.



"utf-8" />
Choď wasm





Kód HTML pochádza od autorov Go na vytvorenie inštancie streamu WebAssembly, ktorý spája váš kód Go s webovou stránkou.

Spustenie webového servera na spustenie stránky

budete nastaviť server s http balík. Importovať http balík a log balík na zaznamenávanie možných chýb do konzoly.

importovať (
"log"
"net/http"
)

Môžete deklarovať premenné pre adresu servera a adresár súborov, ktoré chcete na adrese obsluhovať.

var (
serverAddr = ":8080"
adresár = "."
)

Môžete použiť Súborový server metóda http balík na poskytovanie súborov v zadanom adresári. The Súborový server metóda vezme adresár a vráti inštanciu súborového servera.

funcHlavná() {
serveFiles := http. Súborový server (http. Adresár (adresár))
ak chyba := http. ListenAndServe (serverAddr, serveFiles); chyba!= nula {
log. Fatalln (chyba)
}
}

V Hlavná deklarovali ste premennú inštancie súborového servera na obsluhu súborov v koreňovom adresári. The Počúvajte a podávajte metóda obsluhuje súbory v zadanom adresári na zadanom porte.

WebAssembly Functions in Go

Go poskytuje funkcie na volanie funkcií JS a interakciu s DOM v syscall/js balík.

The js balík poskytuje prístup k hostiteľským prostrediam WebAssembly na js/wasm architektúra. Budete musieť mať svoje vývojové prostredie nastavené na GOARCH=wasm GOOS=js na prístup a používanie balíka.

Na interakciu s vašou webovou stránkou môžete použiť rôzne metódy v balíku. Tu je postup, ako môžete zaregistrovať funkcie v js balík.

// definícia funkcie
funcvytlačiť(toto js. Hodnota, i []js. hodnota)rozhranie{} {
vrátiť js. ValueOf (i[:])
}

The vytlačiť funkcia pri registrácii ako funkcia spätného volania vypíše údaje odovzdané funkcii v konzole prehliadača.

Funkcie spätného volania môžete zaregistrovať na Set metóda globálne metóda js balík. The Set metóda preberá identifikátor funkcie a inštanciu funkcie spätného volania.

funcRegisterCallbackFunctions() {
js. Global().Set("tlač", js. FuncOf(vytlačiť))
}

The RegisterCallbackFunctions metóda registruje vytlačiť funguje ako funkcia spätného volania, ktorú môžete použiť v konzole prehliadača.

WebAssembly je experimentálna funkcia v mnohých jazykoch, vrátane Go

Funkcie WebAssembly sú v mnohých jazykoch relatívne nové, najmä preto, že sa tento jazyk nedávno stal štandardom W3C. The js Balík je experimentálny a na balík sa nevzťahuje prísľub kompatibility Go.