Czytelnicy tacy jak ty pomagają wspierać MUO. Kiedy dokonujesz zakupu za pomocą linków na naszej stronie, możemy otrzymać prowizję partnerską. Czytaj więcej.

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

instagram viewer
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.