WebAssembly на Golang с нуля



Книга WebAssembly на Golang с нуля

Что такое WebAssembly (WASM)?


WebAssembly (WASM) появился в марте 2017 года. Это открытый стандарт (технология) для компилирования приложения в переносимом двоичном коде и выполнения его в веб-браузере.


Он быстр и заточен (в отличие от JavaScript) под задачи, требующие высокой производительности на веб-страницах. Кто-то даже называл WebAssembly убийцей JavaScript или, по крайней мере, его сильным конкурентом.


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


Где применяется WebAssembly (WASM)?


Прежде всего в задачах, для выполнения которых непосредственно в браузере требуется высокая производительность. Это:


  • разработка игр;
  • редактирование / потоковая передача видео;
  • шифрование;
  • распознавание изображений.

Есть много разработок, решений и побочных проектов, созданных с WebAssembly.


Например, TinyGo для минимизации размера двоичного кода: вместе с WebAssembly применяется для микроконтроллеров и современных веб-браузеров.


А еще запускаемый в браузере TensorFlow с улучшением производительности в 10 раз (по сравнению с обычным JS).


И, конечно, игры для браузера с помощью Unity.


Поддержка языка программирования и WebAssembly проверяется здесь.


Даже PHP есть (на самом деле PIB).


Создание первого проекта на WebAssembly (WASM) и Go


Чтобы испытать WebAssembly в деле, создадим простой проект. Попробуйте в онлайн, хотя так теряется ощущение «своего кода».


Устанавливаем Go по инструкции.


Создадим простой пакет Golang, скомпилируем его и получим файл main.wasm, в который добавим все необходимое для работы в браузере.


1. Создаем «main.wasm»


1.1 Создадим каталог с новым проектом:


mkdir example.com

и перейдем к нему:


cd example.com

Основной код приложения непосредственно с кодом предметной области внутри (бизнес-логикой) будет находиться в main.go. Создаем его:


mkdir app && touch app/main.go

1.2 Наполним приложение контентом



1.3 Создадим приложение



Этой командой приложение на Go компилируется в основной файл. Wasm (с байт-кодом wasm)  —  это исполняемый модуль WebAssembly. Пакет Golang должен быть main.


2. Работаем в браузере, библиотеку JavaScript выбрасываем (только один файл)


2.1 В корневом каталоге проекта скопируем «wasm_exec.js»


Поддержка копирования js для WebAssembly

На самом деле wasm_exec.js уже есть на компьютере и просто копируется этой командой из источников Go в проект.


2.2 Понадобится веб-сервер


Создаем простой веб-сервер на Go:


Простой веб-сервер на Go

2.3 Создадим HTML-страницу с вызовом приложения в WebAssembly


WebAssembly на HTML-странице

Надеюсь, все прошло гладко. В итоге у вас должно получиться:


.
└── example.com
├── app
│ └── main.go
├── index.html
├── main.wasm
├── server.go
└── wasm_exec.js

Здесь example.com  —  это название проекта.


2.4 Запустим сервер


go run server.go

и введем в браузере:


http://127.0.0.1:8080


В DevTools («Инструменты разработчика») > console («Консоль») вы увидите:


Hello, User


Приложение WebAssembly в веб-браузере

Все в одной команде


Все это запускается одной командой:


wget -qO - https://gist.githubusercontent.com/romanitalian/cd28becfb130506d5f65ea48d8780ba9/raw/wasm_init.sh | bash /dev/stdin example.com

или


wget -qO - https://bit.ly/3lVlO1i | bash /dev/stdin example.com

Этой командой загружается bash-скрипт и проект легко создается с нуля.


В 2021 году WebAssembly пока еще не «взлетел» выше JavaScript, но уже очень популярен. И в будущем он обязательно понадобится.



1223   0  

Comments

    Ничего не найдено.