javascript - 在 Blazor WebAssembly 中使用 emscripten 编译的 js/wasm
问题描述
我已经构建了一个 wasm 模块,当我使用 express 和 node 提供它时它就起作用了。但我真的不确定如何使用 JSInterop 功能将它与 Blazor Webassembly 结合。当我将脚本添加到 index.html 文件时,它们总是为 .wasm 文件提供 404 未找到,我真的不确定需要发生什么来包含它,或者它是否是正确的方法。我想知道我是否需要对 UseStaticFiles 做一些事情,但这比我在 express 中必须做的更多才能让它工作。
Blazor WebAssembly 项目中的 index.html
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id="app">Loading...</div>
<div id="blazor-error-ui">
An unhandled error has occurred.
<a href="" class="reload">Reload</a>
<a class="dismiss"></a>
</div>
<script src="_content/Microsoft.AspNetCore.Components.WebAssembly.Authentication/AuthenticationService.js"></script>
<script src="_framework/blazor.webassembly.js"></script>
<script type="module" src="scripts/test.js"></script>
<script type="module" src="scripts/Builder.js"></script>
</body>
</html>
Razor 页面代码非常简单:
[Inject]
public IJSRuntime JSRuntime { get; set; }
private IJSObjectReference _jsModule;
protected override async Task OnInitializedAsync()
{
_jsModule = await JSRuntime.InvokeAsync<IJSObjectReference>("import", "./scripts/test.js");
}
Javascript 文件(Builder.js 是与 Builder.wasm 交互的 emscripten 编译代码)
import Module from './Builder.js'
export function showAlert(obj)
{
var module;
Module().then(instance => {
module = instance;
console.log(module);
var instance = new module.MediaPlayer();
console.log(instance);
instance.delete();
});
}
解决方案
推荐阅读
- python - 尽管使用全局关键字访问函数内的变量,但仍出错
- swift - SwiftUI:为表单中的单元格设置动画
- pkcs#11 - 如何通过 SUNPKCS 提供商从 hsm 获取 al 别名?
- python - 与 VISA 的设备通信在 Python 中工作,但在 C++ 中不工作
- apk - 安装前如何知道apk版本?
- python - 嗨,当我运行以下代码时,我的计数为 0,为什么,我希望它显示文件中的行数
- php - 我想生成一个常规数组
- tensorflow - 使用 tensorflow 2.0 中的 tf.summary 保存非急切张量
- azure - Azure IoT 远程监控 Web UI 未在本地计算机上启动 - 未经授权
- php - 如何通过 HTML 表单传递 MediaRecorder 录制的视频