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

时间:2017-09-11 15:38:56

标签: javascript webassembly

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

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

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

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

2 个答案:

答案 0 :(得分: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中工作,而不在浏览器中

答案 1 :(得分:0)

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

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