我目前正在使用ExtCore来构建模块化API,并且我也想使Blazor SPA应用程序模块化。

我希望有一个核心Blazor项目,该项目将从其他项目中导入.cshtml文件,以便SPA应用程序的每个部分都有一个项目,以模块化方式对该解决方案进行编码。

我不能使用ExtCore,因为它要求项目为.net核心,而Blazor是.net标准(试图将其更改为.net核心,然后将其炸毁)。

任何指导,不胜感激。

https://github.com/aspnet/Blazor

最佳答案

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

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

Razor 类库允许您创建一个包含以下内容的项目

  • 静态 Assets (css,js等)
  • 组件
  • Blazor页面(有关如何使它们以模块化方式工作的信息,请参见下文)

  • Microsoft Docs: Razor class library

    使 Razor 类库模块化

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

    路由器具有入站参数,该参数需要一组附加程序集来查看和查找任何附加路由。巧妙命名为附加组件

    因此,您可以使用“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>
    

    示例项目

    我已经在github上放了一个示例项目作为示例。

    Github : ModularBlazor

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

    关于c# - 如何创建模块化Blazor Web App,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49530032/

    10-12 14:58