You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 16:40:15