Blazor独立WebAssembly项目无法导入作用域JavaScript的解决方案咨询
Blazor WebAssembly 实现页面级模块化 JS 导入
我已在 InteractiveServer Blazor 中实现如下功能:在页面生命周期的 OnAfterRender 阶段,通过 IJSRuntime 在 Razor 页面中导入对应的 {page}.razor.js 文件,代码示例如下:
Page.Razor.cs
public partial class Page : ComponentBase { [Parameter] public required IJSRuntime js { get; init; } private IJSObjectReference pageModule; protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { pageModule = await js.InvokeAsync<IJSObjectReference>("import", "Components/Pages/Page.razor.js"); } } // 为简洁起见,省略释放模式相关代码 }
Page.razor.js
export function greet() { window.alert('!'); }
目前虽可通过 wwwroot\*.js 全局 JavaScript 文件及 <script...> 指令实现类似功能,但这并非我想要的方案。我尚未找到 Blazor WebAssembly 中通过 ComponentBase 对象处理的模块化实现方式,以下是我的 WebAssembly 启动代码:
Program.cs
using BlazorApp2; using Microsoft.AspNetCore.Components.Web; using Microsoft.AspNetCore.Components.WebAssembly.Hosting; var builder = WebAssemblyHostBuilder.CreateDefault(args); builder.RootComponents.Add<App>("#app"); builder.RootComponents.Add<HeadOutlet>("head::after"); builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); await builder.Build().RunAsync();
环境:.NET Core 9
内容的提问来源于stack exchange,提问作者James Jonatah
相关产品推荐
相关产品推荐

