是否可以将Web API与WebAssembly 一起使用?如果是这样,怎么样?我对Navigator界面更感兴趣.
JF *_*ien 22
对的,这是可能的.
如何在使用WebAssembly工具链时调用JavaScript API取决于特定的工具链.它实际上是FFI的一种形式:从C++代码看起来你正在调用外部函数,但工具链与嵌入器(这里是浏览器的JavaScript)桥接.几个例子:
工具链如Emscripten自动生成一个importObject用于WebAssembly.instantiate(带有沿.html和.js文件)/大多数内部WebAssembly细节因此通常是隐藏的(I记录他们下文).
此设计允许您调用任何JavaScript代码,而不仅仅是JavaScript API.因此,您可以从WebAssembly调用自己的JavaScript代码.工具链只是简单地处理常见的Web API集合,有时以跨平台的方式处理,例如SDL2可以处理音频,键盘,鼠标,操纵杆和图形.
WebAssembly的的JavaScript API允许你传递一个importObject到WebAssembly.Instantiate构造函数和WebAssembly.instantiate函数:
new Instance(moduleObject [, importObject])
Promise<{module:WebAssembly.Module, instance:WebAssembly.Instance}>
instantiate(BufferSource bytes [, importObject])
Run Code Online (Sandbox Code Playgroud)
WebAssembly 二进制格式包含一个导入部分,您可以通过编译器(如LLVM)声明它将使用的导入.每个导入的字段都在其中查找importObject,并且可以通过WebAssembly call和call_indirect操作码调用这些函数.
因此,您可以调用任意JavaScript,这反过来可以调用您想要的任何Web API.将来,WebAssembly可能会获得允许嵌入器直接公开API的功能,在浏览器中嵌入这可能包括DOM,画布,事件等.
| 归档时间: |
|
| 查看次数: |
3512 次 |
| 最近记录: |