WebAssembly是什么? WebAssembly或wasm是用于浏览器内客户端脚本的低级、可移植的字节码格式,是一种运行在现代网络浏览器中的新型代码、并且提供新的性能特性和效果,对于浏览器下载和加载是有效的。
实际上,WebAssembly是由现有JavaScript引擎背后的浏览器开发人员实现的。从本质上讲,它旨在将JavaScript替换为Web上编译器和转换器的目标。例如,不用将TypeScript编译为JavaScript,它的开发人员现在可以编译为WebAssembly。简而言之,它不是一个新的虚拟机,它是每个浏览器中包含的相同JavaScript VM的新格式。这样就可以在不使用JavaScript的情况下利用现有的JavaScript基础结构。
WebAssembly的优点: 1、快速、高效性
WebAssembly是一种可移植的字节码格式,字节码以二进制格式传输,由于模块的结构,可以通过浏览器并行编译,以便进一步加快速度,使其能够以接近原生性能的速度运行。它是是为诸如C、C++和Rust等低级源语言提供一个高效的编译目标而设计的。
2、可移植性
可以将Webassembly移植到其他平台。这意味着,如果用编译为WebAssembly的语言编写软件,就能够在.NET上运行它。它允许我们重用Web上现有的JavaScript基础结构。
WebAssembly代码在不同平台上能够以接近本地速度运行。
3、可读、可调试
WebAssembly是一种低级的类汇编语言,但是它设计了一个非常规整的、人类可读的文本格式,这允许通过手动来编写代码,查看代码以及调试代码。
4、安全性
WebAssembly运行在一个沙箱化的执行环境中,甚至可以在现有的 JavaScript 虚拟机中实现。在web环境中,WebAssembly将会严格遵守同源策略以及浏览器安全策略。
WebAssembly的几个开发工具 AssemblyScript。支持直接将TypeScript编译成WebAssembly。。
Emscripten。可以说是WebAssembly的灵魂工具不为过,上面说了很多编译,这个就是那个编译器。将其他的高级语言,编译成WebAssembly。
WABT。是个将WebAssembly在字节码和文本格式相互转换的一个工具,方便开发者去理解这个wasm到底是在做什么事。
asm.js强制静态类型,举个例子。
function asmJs() {
'use asm';
let myInt = 0 | 0;
let myDouble = +1.1;
}
【wasm简介】WebAssembly和asm.js性能对比
文章图片