【问题标题】:Blazor create shared component libraryBlazor 创建共享组件库
【发布时间】:2019-07-01 16:20:47
【问题描述】:

我正在尝试研究如何在 Blazor 中创建共享组件库。基本上我想创建我的组件一次,然后能够在多个 UI 项目中使用它们。

组件库

我创建了一个简单的组件库如下

dotnet new blazorlib -n UsComponentLibrary.Lib

创建了一个组件component1.razor

<h3>Component1 from lib</h3>

@code {

}

用户界面

我在 ui 项目中添加了对库的引用。编辑 _host.chtml 文件以包含它

@page "/"
@namespace UsComponentLibrary.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, UsComponentLibrary.Lib

将其添加到其中一个页面

@page "/counter"

hello

<Component1></Component1>

@code {


}

输出

它唯一显示的是你好,我没有从库中的组件中获取文本。我错过了什么?它就像 ui 页面可以看到组件,但是当我运行它时它不存在。

【问题讨论】:

    标签: c# .net-core blazor


    【解决方案1】:

    您需要使用 using 语句而不是 addTagHelper 从库项目中导入命名空间。这是预览版 4 中的一项更改。

    我建议您在 UI 项目中编辑根 _Imports.razor 文件并在其中添加命名空间。它应该看起来像这样:

    @using UsComponentLibrary.Lib
    @using UsComponentLibrary.Lib.Components
    @using UsComponentLibrary.Lib.WhatEverOtherNameSpaceYouNeed
    

    还值得注意的是,Blazor 库项目将很快被淘汰,Razor 类库将成为共享 Blazor 应用组件的方式。

    【讨论】:

    • 效果很好。我是唯一一个认为应该在添加参考时自动添加的人吗?也许我只是要求太多。
    • Blazor 库项目现在处于不断变化之中,因此情况肯定会有所改善。仅来自 Blazor 库项目的提示静态资产不会导入到 Blazor 服务器端项目中。以防万一你试试看。
    • 好的,为什么要将静态资产加载到服务器端项目中?
    • 如果您共享的组件具有某些样式或图像,您可能希望将它们包含在您使用这些组件的任何项目中。一个完美的例子是 UI 组件的 nuget 包,例如 MatBlazor,它是Blazor 版本的材料设计。
    • 这就是我要去的地方,我可能会将它作为 nuget 包发布。
    猜你喜欢
    • 2020-03-25
    • 2021-02-20
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多