如何使用本机工具从本地文件系统中读取WebAssembly文件

问题描述 投票:1回答:2

我正在寻找一种方法来构建我的JavaScript测试并读取一个简单的二进制WebAssembly文件,即来自本地文件系统的ism,即不在浏览器应用程序中,而不使用像节点这样的第三方工具。到目前为止,我发现这可以通过节点fs对象完成。但我不想加载这么大的工具只读一个文件。即

我正在寻找替换像这样的节点调用的方法

var file = fs.readFileSync('myTestFile.wasm');
var buffer = new Uint8Array(file).buffer;

在没有节点和没有浏览器的JavaScript中,它会如何?

javascript webassembly
2个回答
1
投票

所有JavaScript引擎都有一个非浏览器构建的源代码,它们在命令行上运行。 JSC有jsc,V8有d8,SpiderMonkey js和ChakraCore ch

每个浏览器供应商都使用它们进行测试,我们有时不可避免地需要读取ASCII或二进制文件。遗憾的是,这种功能并不是真正的标准,但我发现这适用于我的目的:

const readAsBinary = filename => {
if (typeof process === 'object' && typeof require === 'function') {
    const binary = require('fs').readFileSync(file);
    return !binary.buffer ? new Uint8Array(binary) : binary;
} else
    return typeof readbuffer === 'function'
        ? new Uint8Array(readbuffer(file))
        : read(file, 'binary');
};

const instance = new WebAssembly.Instance(new WebAssembly.Module(readAsBinary(filename)), {});

这只能在node.js或引擎的shell中使用,而不能在浏览器中使用。


0
投票

如果您对.wasm文件进行base64编码,那么您可以将其直接包含在JavaScript中,如下所示:

Module.wasmBinaryFile = "data:application/wasm;base64,AGFzbQEAAAAByQ/AAWACf38Bf2A...";
© www.soinside.com 2019 - 2024. All rights reserved.