webassembly是啥?
WebAssembly(縮寫為Wasm,以下稱Wasm)是基於堆棧的虛擬機的二進制指令格式。Wasm被設計為可編程C / C ++ / Rust等高級語言的可移植目標,可在Web上部署客戶端和服務器應用程序。這個是官方介紹,看了有點蒙圈。簡單理解就是,Wasm是一種格式,一個標准。其他編程語言,像是c/c++/rust/go可以編譯成Wasm格式的中間碼。這種中間碼可以高效的運行,你可以通過這種方式,編寫客戶端和服務器程序。
Wasm有什么特點呢?
- 高效快捷:使用中間碼的設計,跨平台,以本機速度運行。
- 安全:使用沙盒環境,與瀏覽器同源和權限的安全策略。
- 打開調試:可以在瀏覽器上調試。
- 開放平台的一部分:可以通過javascript調用web API。同時,支持非web嵌入。
那就產生一個問題,Wasm會代替JavaScript么?
毫無疑問JavaScript是web時代最成功的語言。那這個風口上的Wasm能代替它么?答案是否定的,Wasm是強化了客戶端的計算能力,使得客戶端能做更多事情,而這些事情是c端很多軟件都已經做得很好的。而Wasm掉用web API還是通過JavaScript的。可以看出,Wasm是在增強客戶端的功能。而且能夠與JavaScript相互調用,這是在增強JavaScript的功能。當然,JavaScript的地位還是不能代替的。就好像網友評論到,node.js是前端攻占后端,而Wasm就是后端可以攻占前端了。
Wasm能用來干什么?
我們先來看看Wasm的用途介紹 這個是官網上的介紹
可以看到,一些游戲、視頻、圖像處理。更多的計算放在了Wasm身上,以前JavaScript很難做到的速度,使用Wasm可以輕松做到。