Web的第四种语言WebAssembly

    WebAssembly 成为连接html、css 和 JavaScript的Web 第四种语言。经过一年的时间,WebAssembly 在12月初被w3c 联盟正式收编,并推荐的web语言。

2017年发布WebAssembly以来,它已经引起了广泛关注和迅速采用。在过去的几年中,我们看到了1.0规范的创建和在所有主要浏览器中的集成。

WebAssembly相关的另一条新闻是:字节码联盟的成立

 

WebAssembly (缩写为Wasm)是基于堆栈的虚拟机的二进制指令格式。Wasm被设计为可移植目标,用于编译高级语言(如C/ C++/ Rust),从而可以在Web上为客户端和服务器应用程序进行部署。

特点:

  1. 高效快捷;
  2. 安全;
  3. 开发且可调试;
  4. 开放式网络平台的一部分

JS API:

WebAssembly 当前必须由JavaScript加载和编译。对于基本加载,分三个步骤:

(1)、将.wasm 字节获取到类型化数组中,或者ArrayBuffer;

              第一步,有很多方法可以获取类型化的数组或ArrayBuffer字节:在网络上,使用XHR或fetch,File从IndexedDB检索,甚至直接在JavaScript中合成。

(2)、将字节编译成 WebAssembly.Module;

           使用异步函数编译字节,该函数WebAssembly.compile返回一个解析为a的Promise WebAssembly.Module。甲Module对象是无状态的支撑结构克隆这意味着经编译的代码可被存储在索引资料和/或经由窗口和工人之间共享postMessage

(3)、实例化 WebAssembly.Module import 以获得可调出的导出

         

Module通过构造一个新的WebAssembly.Instance超车Module和被请求的任何进口Module。 Instance对象就像函数闭包,将代码与环境配对,并且不能结构化克隆。

我们可以将最后两个步骤合并为一个instantiate操作,该操作同时需要字节和导入,并异步返回Instance

function instantiate(bytes, imports) {
  return WebAssembly.compile(bytes).then(m => new WebAssembly.Instance(m, imports));
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值