我目前正在使用Emscripten将我们的C++代码编译成Wasm。这样做可以输出两个文件*.js和*.wasm。随后,我使用我们的实现在其上编写更多的Javascript代码,从而得到3个文件:
index.js
wasmFile.js
wasmFile.wasm
我正在尝试使用webpack创建一个单一的文件,在构建时打包所有内容,而不是在运行时使用以下代码:
function loadScript(url = "wasmFile.js") {
var script = document.createElement( "script" );
script.src = url;
document.getElementsByTagName( "head" )[0].appendChild( script );
await new Promise<void>((res) => {
Module.onRuntimeInitialized = () => res();
});
}
我已经研究了https://github.com/ballercat/wasm-loader,但是看起来我需要为所有函数创建一个WebAssembly.Instance - 而且Wasm文件有很多函数需要为每个函数创建一个实例。
这是我们目前的WebPack配置:
module.exports = {
entry: './src/index.ts',
module: {
rules: [
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/
},
{
test: /\.ts$/,
enforce: 'pre',
loader: 'tslint-loader',
options: {
emitErrors: true
}
}
]
},
resolve: {
extensions: ['.tsx', '.ts', '.js']
},
output: {
filename: 'index.js',
path: path.resolve(__dirname, 'dist')
}
};
这方面我们是否有什么遗漏?或者我可以使用其他软件包来完成这个任务吗?任何帮助都将不胜感激。
谢谢!