Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

WebAssembly — это одна из современных технологий, предназначенных для запуска большего количества языков в браузере с совместимостью с Javascript.

WebAssembly (WASM) — это независимый от платформы двоичный формат инструкций для виртуальных машин на основе стека, разработанный как переносимая цель компиляции для языков программирования для работы в благоприятных средах (например, в Интернете и на сервере). Программы).

С WASM вы можете запускать несколько языков программирования, включая Go, в своем браузере и использовать возможности языка. Кроме того, взаимодействовать с Javascript в Интернете.

Начало работы с WebAssembly в Go

Go обеспечивает первоклассную поддержку использования WebAssembly в ваших приложениях Go, вам нужно всего лишь выполнить несколько конфигураций и скомпилировать код Go в WebAssembly.

Вам нужно будет сделать несколько конфигураций, чтобы перенести код Go в WebAssembly. Вам придется изменить свою архитектуру Go

instagram viewer
ГОАРЧ переменная среды для васм и операционная система Go ГСНО переменная к js.

Запустите эту команду в терминале вашего рабочего каталога, чтобы выполнить эти настройки.

Установить GOARCH=wasm GOOS=js 

Следующим шагом будет преобразование вашего кода Go в WebAssembly. .wasm файл. Запустите эту команду, чтобы транспилировать ваш main.go файл в файл с именем lib.wasm

go build -o lib.wasm main.go

Запустив команду, вы найдете lib.wasm в вашем рабочем каталоге.

Вам нужно скопировать файл WebAssembly, сопровождающий вашу установку Go, в ваш рабочий каталог, чтобы выполнить файл WebAssembly с помощью NodeJS на веб-странице.

ср "$(перейти в GOROOT)/misc/wasm/wasm_exec.js" .

Команда копирует wasm_exec.js файл в ваш рабочий каталог и служит точкой входа в ваше приложение.

Теперь вы можете использовать wasm_exec.js скрипт для выполнения ваших файлов WASM с помощью Go и make DOM-API звонки.

узел wasm_exec.js main.wasm

Запуск веб-сервера для размещения веб-сайта

Добавьте этот код от авторов Go в файл HTML в вашем рабочем каталоге, чтобы создать экземпляр потока данных WebAssembly с InstantiateStreaming метод.



Авторское право 2018 Авторы Go. Все права защищены.
Использование этого исходного кода регулируется лицензией в стиле BSD
, которую можно найти в файле LICENSE.



"утф-8" />
Перейти васм





HTML-код предоставлен авторами Go для создания экземпляра потока WebAssembly, который соединяет ваш код Go с веб-страницей.

Запуск веб-сервера для запуска страницы

Вы будете настроить сервер с http упаковка. Импортировать http пакет и бревно package для вывода возможных ошибок на консоль.

Импортировать (
"бревно"
"сеть/http"
)

Вы можете объявить переменные для адреса сервера и каталога файлов, которые вы хотите обслуживать по этому адресу.

вар (
адрес сервера = ":8080"
каталог = "."
)

Вы можете использовать Файловый сервер метод http package для обслуживания файлов в указанном каталоге. Файловый сервер Метод принимает каталог и возвращает экземпляр файлового сервера.

функцияосновной() {
служитьФайлы := http. Файловый сервер (http. Дир (каталог))
если ошибка := http. ListenAndServe(serverAddr, serveFiles); ошибся != ноль {
бревно. Fatalln (ошибка)
}
}

в основной вы объявили переменную экземпляра файлового сервера для обслуживания файлов в корневом каталоге. слушать и обслуживать метод обслуживает файлы в указанном каталоге на указанном порту.

Функции WebAssembly в Go

Go предоставляет функциональность для вызова функций JS и взаимодействия с DOM в системный вызов/js упаковка.

js пакет обеспечивает доступ к хост-средам WebAssembly на js/васм архитектура. Вам нужно настроить среду разработки на GOARCH=wasm GOOS=js для доступа и использования пакета.

Вы можете использовать различные методы в пакете для взаимодействия с вашей веб-страницей. Вот как вы можете зарегистрировать функции с помощью js упаковка.

// определение функции
функцияРаспечатать(это джс. Значение, i []js. Ценить)интерфейс{} {
возвращаться js. ЗначениеOf (i[:])
}

Распечатать функция при регистрации в качестве функции обратного вызова выведет данные, переданные функции, в консоль браузера.

Вы можете зарегистрировать функции обратного вызова с помощью Набор метод Глобальный метод js упаковка. Набор Метод принимает идентификатор функции и экземпляр функции обратного вызова.

функцияФункции регистрации обратного вызова() {
js. Глобальный (). Установить ("Распечатать", Дж.С. FuncOf(Распечатать))
}

Функции регистрации обратного вызова метод регистрирует Распечатать функционировать как функция обратного вызова, которую вы можете использовать в консоли браузера.

WebAssembly — экспериментальная функция во многих языках, включая Go

Возможности WebAssembly относительно новы для многих языков, тем более что этот язык недавно стал стандартом W3C. js пакет является экспериментальным, и на него не распространяется обещание совместимости с Go.