WebAssembly或wasm是一种新的可移植,大小和加载时间有效的格式,适合于编译到Web。
我正在尝试使用 Nuitka 将 Python 代码编译为 C,然后使用 emcc 将生成的 C 代码编译为 WASM。我已经使用
Blazor WebAssembly 部署到 Github 页面不支持自定义域
我正在尝试使用 Blazor WebAssembly 并将页面部署到 github 页面。一切工作正常,但一旦我切换到自定义域(dns 已完成并工作),页面就会向我显示 blazor“An
Blazor WebAssembly 部署到 Github 页面不起作用
将简单的 Blazor WebAssembly .NET8.0(登陆站点)部署到 Github 页面不起作用。示例项目可以在这里找到:https://github.com/vcarlucci/Hiptoken 部署(gitup 操作)...
如何使用 es6 import 加载 emscripten 生成的模块?
我正在尝试导入使用 emscripten 生成的模块作为 es6 模块。 我正在尝试使用 emscripten 文档中的基本示例。 这是我用来从 C 生成 js 模块的命令
是否可以在 DOM 事件中混合 Javascript 和 C# 代码?
我正在尝试在 Blazor WebAssembly 中实现下一个目标;我需要能够侦听组件中的事件,并使用 Javscript 和 C# 代码,如下所示: 我正在尝试在 Blazor WebAssembly 中实现下一个目标;我需要能够侦听组件中的事件,并使用 Javscript 和 C# 代码,如下所示: <button onclick="console.log('Showing event from Js: ' + event); @Test()">Test</button> @code { public void Test() { JSRuntime.InvokeVoidAsync("console.log", "Showing log from C#"); } } 第一个问题是我收到错误“无法将类型 void 隐式转换为对象”,因此如果我更改 Test 方法签名只是为了返回一个对象 public object Test() { JSRuntime.InvokeVoidAsync("console.log", "Showing log from C#"); return null; } 应用程序编译,但一旦页面加载,“Test()”函数就会自动执行,如果我单击按钮,它只会执行 Javascript 代码,而不是两段代码。 我知道我应该在 Blazor 中处理事件,在事件名称前添加“@”符号,以便调用 C# 方法,并使用互操作执行 Javascript 代码,但这样,我就无法使用默认的 Javascript“事件”我需要使用它,而不是 Blazor“事件”版本。 提前致谢! 只能有1个onclick属性,所以要么从JS调用C##方法,要么从C#调用JS代码。在这两种情况下,您都需要互操作,但不支持以您尝试的方式组合它。 “Test()”函数自动执行 是的,在onclick="... @Test()"中,它是在页面呈现时执行的,而不是在单击按钮时执行的。 您可以通过 3 种不同的方式为一个 DOM 事件同时触发 C# 和 javascript 处理程序。 1。依赖事件冒泡 将按钮包裹在 div 或 span 中。将 javascript onclick 放在包含的 div 或 span 上,并将 C# onclick 放在按钮上。 <div onclick="console.log('Showing event from Js: ' + event)> <button @onclick="Test">Test</button> </div> 除了鼠标事件和大多数按键事件之外,DOM 还会冒泡选择、更改和其他一些事件 2。使用事件监听器 您可以通过像往常一样将 C# 放置为内联属性,但将 javascript 添加为事件侦听器,让 JS 和 C# 触发同一个 DOM 事件。 例如在 App.razor 或 _Host.cshtml <body> 的底部 <script src="_framework/blazor.web.js"></script> <script> document.addEventListener("click", function(e){ if (e.target.id !== "testButton")return console.log("You clicked ", e.target.innerText) }) 您可能需要查找“如何将事件侦听器添加到动态生成的元素。” 3.使用“足够好”的备用活动 内联,具有不同程度的正确性,有时您可以使用“备用”JavaScript 事件,其中几个事件几乎同时在同一元素上触发: <input @onchanged="Test" onblur="javascript:…" /> <input @oninput="Test" onkeyup="javascript:…" /> <select @onchanged="Test" oninput="javascript:…">...</select> <select @bind="Test" oninput="javascript:…">...</select> <button @onclick="Test" onmouseup="javascript:…">...</button>
我正在尝试编译 cpp,但出现如下错误: 警告:未定义符号:_ZN2cv3MatC1EiiiPvm(由顶级编译的 C/C++ 代码引用) 警告:未定义符号:_ZN2cv3MatD1...
将protobuf c++程序编译为wasm(WebAssembly)
我想将一个c++程序编译为wasm(webassemble)并通过wasmtime(wasm运行时)运行它,但失败了。 C++ 程序使用 protobuf,它已经使用 Emscri 从 src 代码编译而来...
如何在我的 wasm 模块中使用 api(Kotlin 多平台)
我有以下问题: 我需要在项目中使用 REST API,但无法在 WebAssembly (WASM) 模块中执行此操作。我一直在尝试使用以下代码: 暂停有趣的 fetchApiData(url:
背景:我是Vite新手,最近我正在尝试构建一个Markdown渲染项目,该项目从外部接收Markdown格式字符串并渲染GFM HTML。我选择 md4w 作为转换器并且...
在 Rust 代码中利用复制的 Trunk Web 应用程序资产
我正在使用 trunk 开发一个简单的 Web 应用程序,我想在其中复制几个 JSON 文件资源以便在一些 Rust 代码中运行时使用。我看到这个例子,他们使用 copy-dir 来链接资产,但是...
使用 emscripten 编译为 WASM 时在 C++ 中使用 protofub。从文档编译示例时出错
我需要帮助解决问题 我正在将 javascript 库的一部分重写为 wasm。 我使用以下命令将 C++ 代码编译为 wasm: emcc idw.cpp -Oz -s WASM=1 -s --no-entry -o idw.wasm (...
是否可以在 Blazor 的 DOM 事件中混合 Javascript 和 C# 代码?
我正在尝试在 Blazor WebAssembly 中实现下一个目标;我需要能够侦听组件中的事件,并使用 Javscript 和 C# 代码,如下所示: 我正在尝试在 Blazor WebAssembly 中实现下一个目标;我需要能够侦听组件中的事件,并使用 Javscript 和 C# 代码,如下所示: <button onclick="console.log('Showing event from Js: ' + event); @Test()">Test</button> @code { public void Test() { JSRuntime.InvokeVoidAsync("console.log", "Showing log from C#"); } } 第一个问题是我收到错误“无法将类型 void 隐式转换为对象”,因此如果我更改 Test 方法签名只是为了返回一个对象 public object Test() { JSRuntime.InvokeVoidAsync("console.log", "Showing log from C#"); return null; } 应用程序编译,但一旦页面加载,“Test()”函数就会自动执行,如果我单击按钮,它只会执行 Javascript 代码,而不是两段代码。 我知道我应该在 Blazor 中处理事件,在事件名称前添加“@”符号,以便调用 C# 方法,并使用互操作执行 Javascript 代码,但这样,我就无法使用默认的 Javascript“事件”我需要使用它,而不是 Blazor“事件”版本。 提前致谢! 只能有1个onclick属性,所以要么从JS调用C##方法,要么从C#调用JS代码。在这两种情况下,您都需要互操作,但不支持以您尝试的方式组合它。 “Test()”函数自动执行 是的,在onclick="... @Test()"中,它是在页面呈现时执行的,而不是在单击按钮时执行的。 您可以通过像往常一样将 C# 放置为内联属性,但将 javascript 添加为事件侦听器,让 JS 和 C# 触发同一个 DOM 事件。 例如在 App.razor 或 _Host.cshtml <body> 的底部 <script src="_framework/blazor.web.js"></script> <script> document.addEventListener("click", function(e){ if (e.target.id !== "testButton")return console.log("You clicked ", e.target.innerText) }) 您可能需要查找“如何将事件侦听器添加到动态生成的元素。” 内联,具有不同程度的黑客性,有时您可以使用“备用”javascript事件,其中几个事件几乎同时在同一元素上触发: <input @onchanged="Test" onblur="javascript:…" /> <input @oninput="Test" onkeyup="javascript:…" /> <select @onchanged="Test" oninput="javascript:…">...</select> <select @bind="Test" oninput="javascript:…">...</select> <button @onclick="Test" onmouseup="javascript:…">...</button>
可以在 Blazor 的 DOM 事件中混合 Javascript 和 C# 代码吗?
我正在尝试在 Blazor WebAssembly 中实现下一个目标;我需要能够侦听组件中的事件,并使用 Javscript 和 C# 代码,如下所示: 我正在尝试在 Blazor WebAssembly 中实现下一个目标;我需要能够侦听组件中的事件,并使用 Javscript 和 C# 代码,如下所示: <button onclick="console.log('Showing event from Js: ' + event); @Test()">Test</button> @code { public void Test() { JSRuntime.InvokeVoidAsync("console.log", "Showing log from C#"); } } 第一个问题是我收到错误“无法将类型 void 隐式转换为对象”,因此如果我更改 Test 方法签名只是为了返回一个对象 public object Test() { JSRuntime.InvokeVoidAsync("console.log", "Showing log from C#"); return null; } 应用程序编译,但一旦页面加载,“Test()”函数就会自动执行,如果我单击按钮,它只会执行 Javascript 代码,而不是两段代码。 我知道我应该在 Blazor 中处理事件,在事件名称前添加“@”符号,以便调用 C# 方法,并使用互操作执行 Javascript 代码,但这样,我就无法使用默认的 Javascript“事件”我需要使用它,而不是 Blazor“事件”版本。 提前致谢! 只能有1个onclick属性,所以要么从JS调用C##方法,要么从C#调用JS代码。在这两种情况下,您都需要互操作,但不支持以您尝试的方式组合它。 “Test()”函数自动执行 是的,在onclick="... @Test()"中,它是在页面呈现时执行的,而不是在单击按钮时执行的。 是的,您可以添加 javascript 事件侦听器,以便 JS 和 C# 都可以运行。 例如在 App.razor 或 _Host.cshtml <body> 的底部 <script src="_framework/blazor.web.js"></script> <script> document.addEventListener("click", function(e){ if (e.target.id !== "testButton")return console.log("I caught ", arguments," in javascript!") }) 您可能需要查找“如何将事件侦听器添加到动态生成的元素。” 内联,具有不同程度的黑客性,有时您可以使用“备用”javascript事件,其中几个事件几乎同时在同一元素上触发: <input @onchanged="Test" onblur="javascript:…" /> <select @onchanged="Test" oninput="javascript:…">...</select> <select @bind="Test" oninput="javascript:…">...</select> <button @onclick="Test" onmouseup="javascript:…">...</button>
我使用 Go 创建了一个测试 WASM 程序。在程序的 main 中,它向“全局”添加了一个 API,并在通道上等待以避免退出。它类似于典型的 hello-world Go WAS...
是否可以使用emscripten为WebAssembly编译x264?
我正在尝试为 WebAssembly 构建 x264 代码。 我使用emconfigure来配置。像下面这样 emconfigure ./configure --prefix="$(pwd)/em" --enable-shared --enable-static --disable-cli --d...
浏览器不使用 Flutter Web 应用程序的 Web 程序集
我正在构建一个 flutter web 应用程序(使用 flutter 3.22 和 Flame Engine)。我正在使用 --wasm 标志构建应用程序。 但 Chrome 和 Edge 都没有使用 wasm 模块,而是回退到 js....
如何从 Go 客户端调用自定义 Wasm 主机函数? 我看过一些示例,显示加载独立的 witx/wat/wasm 定义的函数,但还没有找到 perfor 的示例...
关于 Blazor 自动渲染模式:下载 WASM 后我们可以立即删除 websocket 吗?
目前,如果我们对组件使用自动渲染模式,并且之前尚未在浏览器中下载 WASM,则在 WASM 下载完成后,SignalR 连接将保持打开状态...
我正在使用 MudBlazor 构建 Blazor WASM 应用程序,并且我正在使用浅色和深色模式的自定义主题。 主题提供程序位于 MainLayout.razor 文件中: 我正在使用 MudBlazor 构建 Blazor WASM 应用程序,并且我正在使用浅色和深色模式的自定义主题。 主题提供程序位于MainLayout.razor文件中: <MudThemeProvider Theme="@_theme" IsDarkMode="_isDarkMode" /> _isDarkMode字段首先初始化为null: private MudTheme? _theme = null; 但是他们在OnInitialized()中获得了一个实例: protected async override void OnInitialized() { base.OnInitialized(); _theme = new() { PaletteLight = _lightPalette, PaletteDark = _darkPalette, LayoutProperties = new LayoutProperties() }; } 主题在同一文件的下部定义: private readonly PaletteLight _lightPalette = new() { Black = "#110e2d", AppbarText = "#424242", AppbarBackground = "rgba(255,255,255,0.8)", DrawerBackground = "#ffffff", GrayLight = "#e8e8e8", GrayLighter = "#f9f9f9", }; private readonly PaletteDark _darkPalette = new() { Primary = "#7e6fff", Surface = "#1e1e2d", Background = "#1a1a27", BackgroundGray = "#151521", AppbarText = "#92929f", AppbarBackground = "rgba(26,26,39,0.8)", DrawerBackground = "#1a1a27", ActionDefault = "#74718e", ActionDisabled = "#9999994d", ActionDisabledBackground = "#605f6d4d", TextPrimary = "#b2b0bf", TextSecondary = "#92929f", TextDisabled = "#ffffff33", DrawerIcon = "#92929f", DrawerText = "#92929f", GrayLight = "#2a2833", GrayLighter = "#1e1e2d", Info = "#4a86ff", Success = "#3dcb6c", Warning = "#ffb545", Error = "#ff3f5f", LinesDefault = "#33323e", TableLines = "#33323e", Divider = "#292838", OverlayLight = "#1e1e2d80", }; 问题是,当我刷新任何页面时,颜色会由于某种原因发生变化。模式(深色/浅色)保持不变,但深色模式下颜色更亮一些。就像它们被重置为某些默认值一样。 我想要的颜色: 浏览器刷新后得到的颜色: 如果我现在打开汉堡菜单或将模式切换为浅色,然后再切换回深色,颜色就会得到纠正。 我做错了什么,刷新后颜色不正确? 分析模板中的代码,发现每次刷新页面时,_isDarkMode始终是true。这就是根本原因。 我们可以将_isDarkMode的值存储在localStorage或者其他地方,并在刷新页面加载所选主题时加载。 测试中发现的问题是StateHasChanged();会导致页面加载并且主题会在一段时间后发生变化,因为预加载的主题仍然是 DarkMode。 这是给您的样本。 @inherits LayoutComponentBase @inject IJSRuntime JS <MudThemeProvider Theme="@_theme" IsDarkMode="_isDarkMode" /> <MudPopoverProvider /> <MudDialogProvider /> <MudSnackbarProvider /> <MudLayout> <MudAppBar Elevation="1"> <MudIconButton Icon="@Icons.Material.Filled.Menu" Color="Color.Inherit" Edge="Edge.Start" OnClick="@((e) => DrawerToggle())" /> <MudText Typo="Typo.h5" Class="ml-3">Application</MudText> <MudSpacer /> <MudIconButton Icon="@(DarkLightModeButtonIcon)" Color="Color.Inherit" OnClick="@DarkModeToggle" /> <MudIconButton Icon="@Icons.Material.Filled.MoreVert" Color="Color.Inherit" Edge="Edge.End" /> </MudAppBar> <MudDrawer @bind-Open="_drawerOpen" ClipMode="DrawerClipMode.Always" Elevation="2"> <NavMenu /> </MudDrawer> <MudMainContent Class="mt-16 pa-4"> @Body </MudMainContent> </MudLayout> <div id="blazor-error-ui"> An unhandled error has occurred. <a href="" class="reload">Reload</a> <a class="dismiss">🗙</a> </div> @code { private bool _drawerOpen = true; private bool _isDarkMode = true; private MudTheme? _theme = null; private bool _initialized = false; protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { var savedDarkMode = await JS.InvokeAsync<string>("localStorage.getItem", "isDarkMode"); if (!string.IsNullOrEmpty(savedDarkMode)) { _isDarkMode = bool.Parse(savedDarkMode); StateHasChanged(); } _theme = new MudTheme { PaletteLight = _lightPalette, PaletteDark = _darkPalette, LayoutProperties = new LayoutProperties() }; _initialized = true; StateHasChanged(); } } private void DrawerToggle() { _drawerOpen = !_drawerOpen; } private async Task DarkModeToggle() { _isDarkMode = !_isDarkMode; await JS.InvokeVoidAsync("localStorage.setItem", "isDarkMode", _isDarkMode.ToString().ToLower()); } private readonly PaletteLight _lightPalette = new() { Black = "#110e2d", AppbarText = "#424242", AppbarBackground = "rgba(255,255,255,0.8)", DrawerBackground = "#ffffff", GrayLight = "#e8e8e8", GrayLighter = "#f9f9f9", }; private readonly PaletteDark _darkPalette = new() { Primary = "#7e6fff", Surface = "#1e1e2d", Background = "#1a1a27", BackgroundGray = "#151521", AppbarText = "#92929f", AppbarBackground = "rgba(26,26,39,0.8)", DrawerBackground = "#1a1a27", ActionDefault = "#74718e", ActionDisabled = "#9999994d", ActionDisabledBackground = "#605f6d4d", TextPrimary = "#b2b0bf", TextSecondary = "#92929f", TextDisabled = "#ffffff33", DrawerIcon = "#92929f", DrawerText = "#92929f", GrayLight = "#2a2833", GrayLighter = "#1e1e2d", Info = "#4a86ff", Success = "#3dcb6c", Warning = "#ffb545", Error = "#ff3f5f", LinesDefault = "#33323e", TableLines = "#33323e", Divider = "#292838", OverlayLight = "#1e1e2d80", }; public string DarkLightModeButtonIcon => _isDarkMode switch { true => Icons.Material.Rounded.AutoMode, false => Icons.Material.Outlined.DarkMode, }; }
Wasmer 是一个跨平台 WebAssembly 运行时。我想在IOS平台上运行wsam。官方文档没有教程,网上也找不到demo