阿猫的博客

阿猫的博客

WASM

236
2023-09-30

概述

WebAssembly 是一种新的编码方式,可以在现代的网络浏览器中运行 - 它是一种低级的类汇编语言,具有紧凑的二进制格式,可以接近原生的性能运行,并为诸如 C / C ++等语言提供一个编译目标,以便它们可以在 Web 上运行。它也被设计为可以与 JavaScript 共存,允许两者一起工作。

优势

  • 跨平台特性,现代浏览器基本都支持
  • 比 js 快,编译成二进制,对计算密集型应用很友好(参考 waifu2x)
  • 支持多种语言,例如 C/C++, Rust, Go 等

劣势

  • 虽然能够操作 dom,给了例如 Go 写前端的可能,但是比较鸡肋
  • 如果只是为了嵌在前端用,且对性能不敏感的情况,直接写 js 比混编要方便

WASM with Go

go 官方的编译器就支持编译成 wasm,例如

GOOS=js GOARCH=wasm go build -o main.wasm main.go

也可以使用 TinyGo

tinygo build -o wasm.wasm -target wasm ./main.go

demo: Using WASM | TinyGo

参考

WebAssembly | MDN

WebAssembly | TinyGo

Wasm By Example