WebAssembly to jedna z nowoczesnych technologii zaprojektowanych do uruchamiania większej liczby języków w przeglądarce z interoperacyjnością JavaScript.
WebAssembly (WASM) to niezależny od platformy format instrukcji binarnych dla maszyn wirtualnych opartych na stosie, zaprojektowany jako przenośny cel kompilacji dla języków programowania do uruchamiania w sprzyjających środowiskach (tj aplikacje).
Dzięki WASM możesz uruchomić kilka języków programowania, w tym Go, w swojej przeglądarce i wykorzystać funkcje tego języka. Współpracuj także z Javascriptem w sieci.
Pierwsze kroki z WebAssembly w Go
Go zapewnia pierwszorzędne wsparcie dla korzystania z WebAssembly w aplikacjach Go, wystarczy wykonać kilka konfiguracji i skompilować kod Go do WebAssembly.
Będziesz musiał wykonać kilka konfiguracji, aby przetransponować swój kod Go do WebAssembly. Będziesz musiał zmienić architekturę Go
GOARCH zmienna środowiskowa do był m i system operacyjny Go GOOS zmienna do js.Uruchom to polecenie w terminalu swojego katalogu roboczego, aby dokonać tych konfiguracji.
Ustaw GOARCH=wasm GOOS=js
Następnym krokiem jest transpilacja kodu Go do zestawu WebAssembly .był m plik. Uruchom to polecenie, aby transpilować plik main.go plik do pliku o nazwie lib.wasm
przejdź do kompilacji -o lib.wasm main.go
Po uruchomieniu polecenia znajdziesz plik lib.wasm w swoim katalogu roboczym.
Musisz skopiować plik WebAssembly towarzyszący instalacji Go do katalogu roboczego, aby uruchomić plik WebAssembly z NodeJS na stronie internetowej.
cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" .
Polecenie kopiuje plik wasm_exec.js do katalogu roboczego i służy jako punkt wejścia do aplikacji.
Możesz teraz użyć wasm_exec.js skrypt do wykonywania plików WASM za pomocą Go i make DOM API połączenia.
węzeł wasm_exec.js main.wasm
Uruchamianie serwera WWW w celu hostowania witryny
Dodaj ten kod od autorów Go do pliku HTML w swoim katalogu roboczym, aby utworzyć instancję strumienia danych WebAssembly z Utwórz instancję Streaming metoda.
Prawa autorskie 2018 Autorzy Go. Wszelkie prawa zastrzeżone.
Korzystanie z tego kodu źródłowego podlega licencji typu BSD
, którą można znaleźć w pliku LICENCJA.
"utf-8" />Idź wasm
Kod HTML pochodzi od autorów Go i służy do tworzenia instancji strumienia WebAssembly, który łączy Twój kod Go ze stroną internetową.
Uruchamianie serwera WWW w celu uruchomienia strony
będziesz skonfiguruj serwer z http pakiet. Importuj http pakiet i dziennik pakiet do logowania ewentualnych błędów do konsoli.
import (
"dziennik"
„sieć/http”
)
Możesz zadeklarować zmienne dla adresu serwera i katalogu plików, które chcesz obsłużyć pod tym adresem.
rozm (
adres serwera = ":8080"
katalog = "."
)
Możesz użyć Serwer plików metoda tzw http pakiet do obsługi plików w określonym katalogu. The Serwer plików Metoda pobiera katalog i zwraca instancję serwera plików.
funkcjagłówny() {
serwuj pliki := http. Serwer plików (http. Kierunek (katalog))
Jeśli błąd := http. ListenAndServe (serverAddr, serveFiles); błąd!= zero {
dziennik. fatalne (błąd)
}
}
w główny zadeklarowałeś zmienną instancji serwera plików do obsługi plików w katalogu głównym. The Słuchaj i służ Metoda udostępnia pliki w określonym katalogu na określonym porcie.
Funkcje WebAssembly w Go
Go zapewnia funkcjonalność do wywoływania funkcji JS i interakcji z DOM w syscall/js pakiet.
The js pakiet zapewnia dostęp do środowisk hosta WebAssembly na js/wasm architektura. Musisz mieć skonfigurowane środowisko programistyczne do GOARCH=wasm GOOS=js aby uzyskać dostęp i korzystać z pakietu.
Możesz użyć różnych metod w pakiecie do interakcji ze swoją stroną internetową. Oto jak możesz zarejestrować funkcje za pomocą js pakiet.
// definicja funkcji
funkcjawydrukować(ten j. Wartość, i []js. Wartość)interfejs{} {
powrót js. Wartość(i[:])
}
The wydrukować funkcja przy rejestracji jako funkcja oddzwaniania spowoduje wyświetlenie danych przekazanych do funkcji w konsoli przeglądarki.
Możesz zarejestrować funkcje oddzwaniania za pomocą Ustawić metoda tzw Światowy metoda tzw js pakiet. The Ustawić Metoda przyjmuje identyfikator funkcji i instancję funkcji wywołania zwrotnego.
funkcjaZarejestruj funkcje wywołania zwrotnego() {
js. Globalny().Zestaw("wydrukować"js. FuncOf(wydrukować))
}
The Zarejestruj funkcje wywołania zwrotnego metoda rejestruje wydrukować jako funkcję oddzwaniania, z której możesz korzystać w konsoli przeglądarki.
WebAssembly to funkcja eksperymentalna w wielu językach, w tym Go
Funkcje zestawu WebAssembly są stosunkowo nowe w wielu językach, zwłaszcza że język ten stał się ostatnio standardem W3C. The js pakiet jest eksperymentalny, a pakiet jest zwolniony z obietnicy zgodności Go.