浏览器|如何看待 WebAssembly 这门技术?

浏览器|如何看待 WebAssembly 这门技术?

文章图片

浏览器|如何看待 WebAssembly 这门技术?

文章图片


当然是看好 , 应该说 , 对于一切在垂直领域有效率提升、且业界有案例支持的技术 , 都应该看好 。
如果从2017年浏览器纷纷开始以实验性的方式 , 支持Web WebAssembly功能来看 , 在浏览器使用非JavaScript来完成计算的风已经吹了五年了 。 不过 , 感受到Wasm生态真正发力的是近三年 。 而且不仅仅停留在“前端”范畴 。
大环境的变化 , 让行业生态中音视频、云计算、物联网有了更广阔的市场 , 以及在降本提效上更高的追求 , 此为天时 。 如果说Wasm生态中的C位是Mozilla那么去年在Mozilla 裁员事件出现后 , 他们迅速成立Rust的基金会 , 以保障Rust开发团队能够独立、稳定地运行 , 保护Rust以及周边项目的持续发展 , 为生态提供土壤 , 此可谓地利 。

从理论上讲 , 这项新技术最终实现了让我们可以编写机器代码以在浏览器的虚拟安全沙箱中运行 , 甚至升级后的WASM被设计为其它语言的编译目标 , 允许将服务器端代码(例如C或C ++代码)编译到其中 , 同时在浏览器中执行 。
一、那么wasm设计的初衷是什么呢?
1 . WASM的出现绝不是要让它成为一门新的编程语言 , 正相反 , 它被规划并设计为一个编译目标 , 允许C的开发者编译其代码 , 并在浏览器上运行 。
2 . WASM旨在提供高度优化的网络计算能力 , 并被期待去打破JavaScript在既有环境中的垄断(尽管JavaScript是一种很不错的语言 , 但其在设计之初就没有考虑到性能上的问题) 。
【浏览器|如何看待 WebAssembly 这门技术?】3 . WASM并不是被拿来实现网站优化的 , 而是尝试在运行以下这些繁重任务时 , 将浏览器(以及服务端运行时 , 例如Node.js)的运行推升到一个水准:视频编辑 , 游戏开发 , AR / VR实时应用 , 音乐编辑和流媒体 , 加密 , VPN , 影像辨识 , 以及 , 其它的一些繁重的任务 。

二、WASM的使用方向?
Tensorflow.js:是的 , 就是那个Tensorflow , 那个是把AI和ML带给JS开发人员的库 , 在添加了WASM后端支持后 , Tensorflow一直致力于实现更多的模型 , 效果如何?与纯JS版本相比 , 这些模型性能平均提高了10倍 。
Unity:另一个很牛很牛的技术大厂牌 , 最最重要的游戏开发引擎之一 , 它能够将你的项目导出与Web相兼容 。 从2018年开始 , 该过程通过编译为WebAssembly来完成——在Unity上的应用成为了高效利用WASM技术的一个强大示范;游戏开发人员不再需要为Web做代码编译、更不需要去摆弄JS , 他们只需要专注于编写用于支持游戏运行那部分代码 , 然后 , 其它交由编译过程去处理并完成 。
yew:是否曾考虑过将Rust用于Web应用程序?现在 , 我们要感谢Yew和WebAssembly给我们带来的多一种“可能性”——你不仅可以将Rust用于UI , 而且此框架还提供了一个多线程环境来工作 。 该项目尚未投入生产环节 , 但是无论你是对Rust很狂热还是有兴趣 , 都可以持续关注下 。

三、那么WASM开发者在意它吗?
WASM其实并不适合Web开发者 , 原因是Web开发者自然知道如何使用JS , 并且很了解自己日常已有的工作量 , 为什么要费力混入WASM去把问题搞复杂?
WASM更适合开发一个计算密集型应用 , 这意味着不会是个本机应用 , 大概率是游戏、VR/AR应用、虚拟机等等 , 又因为把技术推向极限不是每家公司的目标 , 这样 , WASM的蛋糕再次被往小了切 。