Az Önhöz hasonló olvasók támogatják a MUO-t. Amikor a webhelyünkön található linkek használatával vásárol, társult jutalékot kaphatunk. Olvass tovább.

A WebAssembly az egyik olyan modern technológia, amelyet arra terveztek, hogy több nyelvet futtasson a böngészőben, Javascript együttműködési képességgel.

A WebAssembly (WASM) egy platformfüggetlen, bináris utasításformátum verem alapú virtuális gépekhez, amelyeket egy hordozható fordítási cél programozási nyelvekhez, amelyek lehetővé teszik a környezetekben (azaz a weben és a szerveren) való futtatást alkalmazások).

A WASM segítségével számos programozási nyelvet futtathat, beleértve a Go-t is, a böngészőjében, és kihasználhatja a nyelv funkcióit. Ezenkívül működjön együtt a Javascripttel a weben.

A WebAssembly használatának első lépései a Go-ban

A Go első osztályú támogatást nyújt a WebAssembly használatához a Go-alkalmazásokban, csak néhány konfigurációt kell elvégeznie, és a Go kódot kell fordítania a WebAssembly-be.

El kell végeznie néhány konfigurációt a Go kód WebAssembly programba való átültetéséhez. Meg kell változtatnia a Go architektúráját

instagram viewer
GOARCH környezeti változóhoz wasm és Go operációs rendszer GOOS változó -ra js.

A konfigurációk elvégzéséhez futtassa ezt a parancsot a munkakönyvtár termináljában.

Állítsa be: GOARCH=wasm GOOS=js 

A következő lépés a Go kód átültetése egy WebAssembly-be .wasm fájlt. Futtassa ezt a parancsot a saját átültetéséhez fő.go nevű fájlba lib.wasm

go build -o lib.wasm main.go

A parancs futtatásakor megtalálja a lib.wasm a munkakönyvtárában.

A Go telepítését kísérő WebAssembly fájlt át kell másolnia a munkakönyvtárába, hogy a WebAssembly fájlt NodeJS-szel végrehajthassa egy weboldalon.

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

A parancs másolja a wasm_exec.js fájlt a munkakönyvtárába, és belépési pontként szolgál az alkalmazáshoz.

Most már használhatja a wasm_exec.js szkriptet a WASM-fájlok végrehajtásához a Go and make segítségével DOM API hívásokat.

csomópont wasm_exec.js main.wasm

Webszerver indítása a webhely üzemeltetéséhez

Adja hozzá ezt a kódot a Go szerzőktől egy HTML-fájlhoz a munkakönyvtárában, hogy létrehozzon egy WebAssembly adatfolyamot a példányosítása Streaming módszer.



Szerzői jogok 2018 The Go Authors. Minden jog fenntartva.
A forráskód használatát egy BSD-stílusú
licenc szabályozza, amely a LICENSE fájlban található.



"utf-8" />
Menj wasm





A HTML-kód a Go Authorstól származik, egy WebAssembly adatfolyam létrehozásához, amely összeköti a Go kódot a weboldallal.

Webszerver indítása az oldal futtatásához

fogsz állítsa be a szervert a http csomag. Importálja a http csomagot és a log csomag a lehetséges hibák naplózásához a konzolon.

import (
"napló"
"net/http"
)

Deklarálhat változókat a szerver címéhez és a címen megjeleníteni kívánt fájlok könyvtárához.

var (
szerverAddr = ":8080"
könyvtár = "."
)

Használhatja a FileServer módszere a http csomag egy megadott könyvtárban lévő fájlok kiszolgálásához. A FileServer metódus beveszi a könyvtárat, és egy fájlkiszolgáló-példányt ad vissza.

funcfő-() {
serveFiles := http. FileServer (http. Rendező (könyvtár))
ha hiba := http. ListenAndServe (serverAddr, serveFiles); hiba! = nulla {
log. Fatalln (hiba)
}
}

Ban,-ben fő- függvényt, deklarált egy fájlkiszolgáló-példányváltozót a gyökérkönyvtárban lévő fájlok kiszolgálására. A ListenAndServe metódus a megadott könyvtárban lévő fájlokat szolgálja ki a megadott porton.

WebAssembly funkciók a Go-ban

A Go funkcionalitást biztosít a JS függvények hívásához és a DOM-mal való interakcióhoz syscall/js csomag.

A js csomag hozzáférést biztosít a WebAssembly gazdagép környezeteihez a js/wasm építészet. Be kell állítania a fejlesztői környezetet a GOARCH=wasm GOOS=js a csomag eléréséhez és használatához.

A csomagban található különféle módszereket használhatja a weboldallal való interakcióhoz. Így regisztrálhat funkciókat a js csomag.

// függvénydefiníció
funcnyomtatás(ez a js. Érték, i []js. Érték)felület{} {
Visszatérés js. ValueOf (i[:])
}

A nyomtatás funkció regisztrációkor visszahívási funkcióként kiadja a böngészőkonzolon lévő funkciónak átadott adatokat.

A visszahívási funkciókat a Készlet módszere a Globális módszere a js csomag. A Készlet metódus veszi a függvényazonosítót és egy visszahívási függvénypéldányt.

funcRegisterCallbackFunctions() {
js. Global().Set("nyomtatás", js. FuncOf(nyomtatás))
}

A RegisterCallbackFunctions metódus regisztrálja a nyomtatás visszahívási funkcióként működik, amelyet a böngésző konzoljában használhat.

A WebAssembly egy kísérleti funkció számos nyelven, beleértve a Go-t is

A WebAssembly funkciói sok nyelven viszonylag újak, különösen azért, mert a nyelv nemrég W3C szabvány lett. A js csomag kísérleti jellegű, és a csomag mentesül a Go kompatibilitási ígéret alól.