WebAssembly简单介绍
MDN官方定义:WebAssembly是一种新的编码方式,可以在现代的网络浏览器中运行 - 它是一种低级的类汇编语言,具有紧凑的二进制格式,可以接近原生的性能运行,并为诸如C / C ++等语言提供一个编译目标,以便它们可以在Web上运行。它也被设计为可以与JavaScript共存,允许两者一起工作。
用人话解释
各种官方语言在我这都觉得像是方言,比如说最近宪法拟修改xxx的,都要猜半天。
那么WebAssembly用人话怎么解释呢?就是
浏览器可以使用JS之外的其他语言了!!
其实呢也没啥好高兴的,明显是更多人能来抢饭碗了!
WebAssembly现状如何?
【浏览器支持还不错】
【社区关注度】
这个是.net的,2000多星,https://github.com/aspnet/blazor
而且还在持续更新中
代码怎么写?
更多细节请参考 https://developer.mozilla.org/zh-CN/docs/WebAssembly/C_to_wasm
WebAssembly可能替代JS?
这是一段hacker news的回答,译文附在图后,摘进来当然表示我也同意这个看法呀
【提问】JavaScript与WebAssembly的未来。 JavaScript会共存吗?
【回答】JavaScript是不会被WebAssembly替代的。
- 首先,在浏览器中删除javascript支持将会使当前在网络上运行的所有JS代码的功能黯然失色,这将延伸到几乎每个人都可以破解的网页。所以,如果仅仅是为了向后兼容,浏览器必须支持javascript在可预见的未来。
- 其次,WebAssembly项目自己的FAQ [0]指出:“WebAssembly被设计为对JavaScript的补充而非替代。”
- 第三,编译WebAssembly的语言总是比编写JavaScript更复杂的过程 - 尽管我承认现在需要大量的JavaScript本身也需要编译或转换,但这实际上并不是必需的。在浏览器中运行基于文本的解释型脚本语言可以提供WebAssembly无法直接复制的方便性和简单性。对我来说,这表明JavaScript甚至不会像默认的WebAssembly模块那样实现,尽管也有可能会。
很多人打算尽可能努力用编译为WebAssembly的语言替换JavaScript,并且它可能会替代语言“编译为JavaScript”的范式,因为它提供了一个实际的字节码,而不是假装javascript是字节码,但是喜欢或不喜欢JavaScript都不会很快消失。
想了解更多请阅读WebAssembly官方FAQ http://webassembly.org/docs/faq/
WebAssembly优点
这里只摘了一段,原文https://medium.com/@brianjoelfeldman/webassembly-the-future-94307a67c9df,翻译见
对于静止图像测试,我们发现主题能够比asm.js更快地检测到面部〜80%,并且比JavaScript快得多〜50%。 考虑到使用人脸检测算法的眼睛检测,我们发现它比asm.js和JavaScript快70%。
至于摄像头反馈,我们使用每秒帧数来确定哪种格式是最高性能的。 在将流传输到3个HTML5画布元素的同时,我们不断在渲染图像上运行我们的算法,以检测面部并通过绘制到画布上进行构图。 视频格式的表现差异更加明显。 wasm画布呈现在50-60 FPS之间,asm.js为20-30之间,以及JavaScript为4-7之间
所以说这个东西并其实不重要,100个项目也可能碰不到一个需要wasm的。但是你要作为一个骨干开发,Web上的图像算法很慢,你不知道wasm基本上就没的优化;你要是作为CTO,一个C#.net的web项目要发展前端 ,如果知道wasm,那原来的团队就不需要裁员.net另招js,而是直接应用Blazor来构建前端。
领取专属 10元无门槛券
私享最新 技术干货