介绍
webAssembly
是一套运行在浏览器上的二进制机器语言。其具有是小且快的特点。
你可以通过C
和C++
(emscirpten)、Typescript
(AssemblyScript)、Rust
(wasm-pack)来编写 webAssembly
。
webAssembly
可以直接运行在浏览器环境中,也可以运行在node
环境中。
时间线
- 2015年,首次发布
webAssembly
实现的游戏。试玩游戏 - 2017年,已经被
Chrome, Edge, Firefox, and WebKit
支持。查看更多 - 2019年,W3C 使
webAssembly
成为web
标准。 - 现在,webAssembly 最新提案
特点
- 运行在沙箱,保证了环境隔离,因此可以用于虚拟机的实现。
- 高效、可移植,在多个平台上可运行。
使用场景
浏览器环境
- 一些语言的工具包
- 游戏
- 点对点应用,例如区块链
- 音乐 APP
- 图片处理
- 远程桌面
- 加密
- 本地 web server
非浏览器环境
- 服务端应用程序
- 服务端的沙箱环境
hybird native app
WebAssembly 关键概念
在 javascript
的 API
中。
- 模块:编译后的二进制文件,以
.wasm
后缀结尾。 - 内存:
ArrayBuffer
,大小可变。WebAssembly
需要手动管理内存。WebAssembly
是按照“页”这个单位来划分内存,一“页”是 32B(常看到i32
就是这个大小)。 - 表格:带类型数组,大小可变。
Javascript
包装具有类数组结构的对象,存储了多个函数引用。 - 实例:是
WebAssembly.Module
的一个可执行实例。 实例包含所有的WebAssembly
导出函数 ,