在 Razor 类库中使用 MudBlazor

问题描述 投票:0回答:1

我想创建一个个人剃须刀类库,在其中我需要使用 MudBlazor。如何在不要求用户在其项目上安装 MudBlazor 的情况下实现此目的? 问题是 MudBlazor 被添加到 Razor 类中,但我无法在项目中配置其 JavaScript 和 CSS。我也不希望用户必须在他们的项目中配置 MudBlazor。有没有办法让我处理 Razor 类项目中的设置,以便用户只需要使用我的 Razor 类?

asp.net-mvc asp.net-core razor blazor
1个回答
0
投票

我认为您不会找到一种“干净”的方法来处理这个问题。您的库至少必须实现一个

AddMyLibrary()
方法,以便在组合根中的 IServiceCollection 上调用。在该方法中,您可以代表用户将 MudBlazor 附加到集合中。就像当您调用
AddMudBlazor()
时,该方法所做的不仅仅是向集合中添加一件事。

真正的问题是 MudBlazor 需要在应用程序内进行额外的设置才能正常运行。需要将行添加到 MainLayout 中,以便 MudBlazor 用于实现大量功能的支持组件可用。也许如果您不使用 SnackBar 或 Popover 系统,您就不需要这些系统,但是您可能会遇到更大的问题......

如果有人想要使用 MudBlazor 您的库,会发生什么?您期望用户如何协调两个系统使用的配置方法?这增加了一层混乱,我个人认为这是不必要的。

使用此类系统的正确方法是将它们设置为独立的。当我们有一个类库项目使用 EF Core 处理数据访问并在 Blazor 等前端项目中使用时,我们必须在 Blazor 项目中配置 DbContext。我确信有些人宁愿完全抽象化它,但是让前端项目的维护者定义他们希望如何配置和创建 DbContext 是最佳实践。

您的类库使用 MudBlazor 作为 Nuget 包也是最佳实践,如果您将您的库提供给其他人,则可以将其作为 Nuget 包使用。这样,当修复程序发布时,您的库的用户可以独立于您的代码更新 MudBlazor。您可以限制软件包兼容的版本号范围,以帮助防止重大更改,但如果您完全隐藏正在使用的 MudBlazor 实现,那么您实际上将用户锁定到您部署的任何特定版本。

所以简短的答案是:不要以让用户变得更轻松为幌子,剥夺用户管理其依赖项和组合根的能力。从长远来看,你只会伤害他们。

© www.soinside.com 2019 - 2024. All rights reserved.