Go - это язык программирования с открытым исходным кодом, который упрощает создание простого, надежного и эффективного программного обеспечения.
Зачем мне учить еще один язык, что такого захватывающего в го?

- Простой и легкий синтаксис
- Параллелизм
- Программировать на Go - удовольствие
- Легкая работа в сети
- ~ Быстро
и больше"
Возвращаясь к нашему следующему герою этой истории, WebAssembly.
WebAssembly простым языком запускает ваш собственный код (C / C ++ / Rust / Go) в браузере. Это быстро, безопасно и легко обслуживается.
Они представляют собой набор двоичных инструкций, которые работают на любом стековом компьютере.
Производители браузеров предприняли несколько попыток запустить собственный код в браузере. Единственная вещь, которая была широко популярна, - это asm.js. Но и у него было много ограничений.
WebAssembly - это инструкции с двоичной кодировкой, которые эффективны по размеру и времени загрузки. Они безопасны и работают в изолированной среде.
Подождите, это не Javascript быстро. Да, вы можете добиться ~ собственной скорости в Javascript. Но объем работы и количество усилий, которые вы должны потратить, высоки. Но с WebAssembly вы можете получить это прямо из коробки.
Поддерживаемая производительность - ключ к успеху.
Давайте начнем с Go и WebAssembly.
Для начала вам необходимо установить последнюю версию Go. Если вы уже установили go, установите последнюю версию v1.11, запустив:
go get golang.org/dl/go1.11rc1
Затем вы можете запустить команду go1.11rc1 в своем терминале вместо команды go.
Пришло время скачать исходный код.
go1.11rc1 download
🏁 Шаг 1 завершен. Вы установили последнюю версию.
Если у вас еще не установлен Go, перейдите здесь, чтобы получить более подробные инструкции.
А теперь приступим к образцу helloworld.
Давайте создадим наш go файл,
mkdir go-awsm-with-wasm
cd go-awsm-with-wasm
touch main.go
Откройте его в своем любимом редакторе кода и начните печатать.
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}
WebAssembly в настоящее время поддерживает только numbers, но нам нужно передавать и возвращать строки и другие типы объектов. Кто просто играет с числами. Поэтому нам нужны файлы привязки, которые помогают переводить вещи, которые мы отправляем из WASM в JavaScript, и из JavaScript в WASM. Итак, нам нужны файлы привязки. У Go src есть файл привязки, давайте его возьмем.
Итак, у нас есть wasm_exec.html и wasm_exec.js файл (также известный как файл привязки).
🏁 Шаг 2 завершен, все необходимое есть.
Пришло время сгенерировать файл WASM из файла Go.
Давайте работать
GOARCH=wasm GOOS=js go1.11rc1 build -o test.wasm main.go
Итак, что мы здесь делаем,
Мы сообщаем компилятору GO,
архитектура для рассмотрения: wasm с GOARCH
ОС, на которую мы нацелены: js
построить мой main.go и вывести test.wasm
🎉 Ура, у тебя получилось.
🏁 Шаг 3 завершен, наш wasm готов.
Теперь последний шаг. Запускаем и смотрю на выходе.
Есть несколько способов сделать это,
Вариант 1. Простой способ
Если у вас установлен Python, вы можете запустить
python -m SimpleHTTPServer 8000
Затем вы можете перейти на http: // localhost: 8000
Вариант 2: путь суслика
Если вы являетесь серийным сусликом, вы можете создать сервер и использовать его вместо него.
touch server.go
package main
import "net/http"
func addMIMEToWasmFiles(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/wasm")
http.ServeFile(w, r, "test.wasm")
}
func main() {
mux := http.NewServeMux()
mux.Handle("/", http.FileServer(http.Dir(".")))
// WASM files need MIME type to be set
mux.HandleFunc("/test.wasm", addMIMEToWasmFiles)
http.ListenAndServe(":8000", mux)
}
Затем вы можете перейти на http: // localhost: 8000
Вариант 3. Путь веб-разработчика
Это мой личный фаворит, используйте Webpack
npm init --yes
npm i --save-dev webpack webpack-cli webpack-dev-server
touch webpack.config.js
И добавляем конфигурацию,
const path = require('path');
module.exports = {
entry: "./wasm_exec.js",
output: {
path: path.resolve(__dirname, "dist"),
filename: "index.js",
},
mode: "development",
};
Добавьте скрипты в package.json
"scripts": {
"build": "webpack --config webpack.config.js",
"start": "webpack-dev-server"
}
Теперь вы можете просто запустить npm run start и перейти на http: // localhost: 8000
🏁 Шаг 4 и публикация завершена
Давайте приступим к взлому WebAssembly и сделаем Интернет еще лучше.