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

How to read WebAssembly file it JavaScript from the local file system with native tools

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

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

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

在没有节点和浏览器的 JavaScript 中会是什么样子?

所有 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 中工作,在浏览器中 不工作。

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

Module.wasmBinaryFile = "data:application/wasm;base64,AGFzbQEAAAAByQ/AAWACf38Bf2A...";