介紹
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
匯出函式 ,