如何创建模块化Blazor Web App

Jon*_*yan 6 c# asp.net-core blazor

我目前正在使用ExtCore构建模块化API,我也希望将Blazor SPA应用程序模块化.

我想要一个核心Blazor项目,它从其他项目中导入.cshtml文件,这样我就可以在SPA应用程序的每个部分有一个项目,以模块化的方式编写解决方案.

我不能使用ExtCore,因为它要求项目是.net核心,而Blazor是.net标准(尝试将其更改为.net核心并且它已经爆炸).

任何指导都非常感谢.

https://github.com/aspnet/Blazor

Jon*_*yan 6

自从问我的问题以来,很多事情都发生了变化。Blazor 现在是 .net core 的一个完全支持的部分,并且工具得到了极大的改进。

现在通过 Razor 类库可以更轻松地创建模块化 Blazor 应用程序

Razor 类库允许您创建一个项目,其中包含

  • 静态资源(css、js 等)
  • 成分
  • Blazor Pages(有关如何使它们以模块化方式工作,请参见下文)

Microsoft Docs:Razor 类库

使 Razor 类库模块化

App.razor 内部是 Blazor 的路由器。

路由器有一个烘焙参数,它需要一组额外的程序集来查看和查找任何额外的路由。巧妙命名的AdditionalAssemblies

因此,您可以使用“AdditionalAssemblies”参数来指向扫描引用的 Razor 类库以获取页面的方法。

    <Router AppAssembly="@typeof(Program).Assembly" AdditionalAssemblies="AssemblyScanning.GetAssemblies().ToArray()">
    <Found Context="routeData">
        <RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
    </Found>
    <NotFound>
        <LayoutView Layout="@typeof(MainLayout)">
            <p>Sorry, there's nothing at this address.</p>
        </LayoutView>
    </NotFound>
</Router>
Run Code Online (Sandbox Code Playgroud)

示例项目

我在github上整理了一个示例项目作为示例。

Github : ModularBlazor

没有框架。只是默认的 Blazor 位、几个基本接口和一些程序集扫描。