首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在javascript中导入webassembly模块的正确方法是什么?

在javascript中导入webassembly模块的正确方法是什么?
EN

Stack Overflow用户
提问于 2019-09-22 20:26:11
回答 2查看 1.4K关注 0票数 0

在webassembly.org、JS页面中,在javascript中导入WebAssembly的方法是

代码语言:javascript
复制
fetch('example.wasm').then(response => response.arrayBuffer())
.then(bytes => instantiate(bytes, importObject))
.then(instance => instance.exports.e());

emcc发出的js文件似乎可以做到这一点。

但是,当我对Rust的货物使用wasm-pack时,javascript文件只是执行import * as wasm from './example.wasm'

这两个有什么不同?直接导入是新支持的功能吗?当使用直接导入时,我如何从javascript访问WebAssembly的内存,因为我没有像使用第一种方法那样将它们传递给WebAssembly模块?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-12 04:18:24

WebAssembly模块的声明性导入尚未标准化。我假设wasm-pack针对的是Node.js的实验性导入特性:https://www.joyent.com/blog/improved-wasm-support-coming-to-node#importing-webassembly-modules

如何访问内存取决于模块:如果它导出它,您可以作为成员访问它,如果它导入它,它必须以您将在导入对象中使用的名称作为ES6模块的成员。

票数 1
EN

Stack Overflow用户

发布于 2021-03-10 18:10:31

根据平台的不同,如果wasm模块在web浏览器中运行,请按照前面提到的方式获取和实例化。当在nodejs中运行WASM时,WASI已经能够提供甚至文件系统沙箱。它可以使用实例化中的节点Fs从磁盘读取文件

代码语言:javascript
复制
    const importObject = { wasi_snapshot_preview1: wasi.wasiImport };
    const wasm = await WebAssembly.compile(fs.readFileSync('./demo.wasm'));
    const instance = await WebAssembly.instantiate(wasm, importObject);
    wasi.start(instance);

链接:https://nodejs.org/api/wasi.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58049193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档