I lettori come te aiutano a sostenere MUO. Quando effettui un acquisto utilizzando i link sul nostro sito, potremmo guadagnare una commissione di affiliazione. Per saperne di più.

WebAssembly è una delle moderne tecnologie progettate per l'esecuzione di più lingue sul browser con l'interoperabilità Javascript.

WebAssembly (WASM) è un formato di istruzioni binarie indipendente dalla piattaforma per macchine virtuali basate su stack progettate come un obiettivo di compilazione portatile per i linguaggi di programmazione da eseguire su ambienti abilitanti (ad esempio, web e server app).

Con WASM, puoi eseguire diversi linguaggi di programmazione, incluso Go, sul tuo browser e sfruttare le funzionalità del linguaggio. Inoltre, interagisci con Javascript sul web.

Introduzione a WebAssembly in Go

Go fornisce un supporto di prima classe per l'utilizzo di WebAssembly nelle tue applicazioni Go, devi solo effettuare alcune configurazioni e compilare il codice Go in WebAssembly.

Dovrai effettuare alcune configurazioni per trasferire il tuo codice Go in WebAssembly. Dovrai cambiare la tua architettura Go

instagram viewer
GOARCH variabile d'ambiente a wasm e Go sistema operativo GOOS variabile a js.

Esegui questo comando nel terminale della tua directory di lavoro per effettuare queste configurazioni.

Impostare GOARCH=wasm GOOS=js 

Il passaggio successivo consiste nel transpilare il codice Go in un WebAssembly .wasm file. Esegui questo comando per eseguire il transpile del tuo file main.go file in un file denominato lib.wasm

vai build -o lib.wasm main.go

Eseguendo il comando, troverai un file lib.wasm nella tua directory di lavoro.

Devi copiare il file WebAssembly che accompagna l'installazione di Go nella tua directory di lavoro per eseguire il file WebAssembly con NodeJS su una pagina web.

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

Il comando copia il file wasm_exec.js file nella tua directory di lavoro e funge da punto di ingresso per la tua applicazione.

Ora puoi usare il wasm_exec.js script per eseguire i file WASM con Go e make API DOM chiamate.

nodo wasm_exec.js main.wasm

Avvio di un server Web per ospitare il sito Web

Aggiungi questo codice dagli autori di Go a un file HTML nella tua directory di lavoro per creare un'istanza di un flusso di dati WebAssembly con l'estensione istanziateStreaming metodo.



Copyright 2018 The Go Authors. Tutti i diritti riservati.
L'uso di questo codice sorgente è regolato da una
licenza in stile BSD che può essere trovata nel file LICENSE.



"utf-8" />
Vai wasm





Il codice HTML proviene dagli autori Go, per creare un'istanza di un flusso WebAssembly che collega il codice Go alla pagina Web.

Avvio di un server Web per eseguire la pagina

Lo farai configurare il server con il http pacchetto. Importa il http pacchetto e il tronco d'albero pacchetto per la registrazione di eventuali errori nella console.

importare (
"tronco d'albero"
"rete/http"
)

È possibile dichiarare variabili per l'indirizzo del server e la directory dei file che si desidera servire sull'indirizzo.

var (
serverAddr = ":8080"
rubrica = "."
)

Puoi usare il File server metodo del http pacchetto per servire i file in una directory specificata. IL File server Il metodo accetta la directory e restituisce un'istanza del file server.

funzprincipale() {
serveFiles := http. Fileserver (http. Dir (cartella))
Se err := http. ListenAndServe (serverAddr, serveFiles); errare!= zero {
tronco d'albero. Fatalln (err)
}
}

Nel principale funzione, hai dichiarato una variabile di istanza del file server per servire i file nella directory principale. IL Ascolta e servi Il metodo serve i file nella directory specificata sulla porta specificata.

Funzioni WebAssembly in Go

Go fornisce funzionalità per chiamare le funzioni JS e interagire con il DOM nel file chiamata di sistema/js pacchetto.

IL js Il pacchetto fornisce l'accesso agli ambienti host WebAssembly su js/wasm architettura. Avrai bisogno che il tuo ambiente di sviluppo sia configurato per il GOARCH=wasm GOOS=js per accedere e utilizzare il pacchetto.

Puoi utilizzare i vari metodi nel pacchetto per interagire con la tua pagina web. Ecco come è possibile registrare le funzioni con il file js pacchetto.

// definizione della funzione
funzstampa(questo js. Valore, i []js. Valore)interfaccia{} {
ritorno js. ValoreDi (i[:])
}

IL stampa funzione al momento della registrazione come funzione di richiamata produrrà i dati passati alla funzione nella console del browser.

È possibile registrare le funzioni di richiamata con il Impostato metodo del Globale metodo del js pacchetto. IL Impostato Il metodo accetta l'identificatore della funzione e un'istanza della funzione di richiamata.

funzRegisterCallbackFunctions() {
js. Globale().Set("stampa", js. FuncOf(stampa))
}

IL RegisterCallbackFunctions metodo registra il stampa funzione come funzione di richiamata che puoi utilizzare nella console del browser.

WebAssembly è una funzionalità sperimentale in molte lingue, incluso Go

Le funzionalità di WebAssembly sono relativamente nuove per molti linguaggi, specialmente da quando il linguaggio è recentemente diventato uno standard W3C. IL js Il pacchetto è sperimentale e il pacchetto è esente dalla promessa di compatibilità con Go.