【问题标题】:When should I generate html using RenderTreeBuilder instead Razor syntax我什么时候应该使用 RenderTreeBuilder 而不是 Razor 语法生成 html
【发布时间】:2020-02-05 14:41:38
【问题描述】:

使用 Blazor,我们可以使用 Razor 语法或覆盖 BuildRenderTree(RenderTreeBuilder builder) 生成组件的 Html 元素。

我注意到编写库的人通常更喜欢为每个组件创建一个 .cs 文件,在 BuilderRenderTree 方法中定义 Html 元素。相反,编写项目的人更愿意为每个组件创建两个文件(.razor 中的 Html 和逻辑 .cs)或单个 .razor 文件(Html 和逻辑在一个地方)。

我已经读过了

所以,我的问题是

为什么(以及何时)应该覆盖 BuilderRenderTree?

【问题讨论】:

    标签: blazor


    【解决方案1】:

    一般来说,编写组件的主要方式有三种

    • 使用包含两个部分的单个文件(.razor 扩展名):包含 C#、Razor 标记(包括指令等)和 Html 标记的组件的视图部分,以及放在 @ 中的代码部分代码块。这是最简单的编码方式。这也是我的首选方式。一切都在我眼前。

    • 其他人更喜欢将上述文件分成两个单独的文件:第一个专用于 Razor 组件的视图部分,文件扩展名为 .razor;第二部分是扩展名为 .razor.cs 的视图的代码部分,目前您可以定义为分部类。我发现处理两个相关文件很困难。

    • 第三个选项是单个文件,其中包含通过覆盖 BuildRenderTree 方法创建渲染树的代码。你是对的,组件作者通常以这种风格编写代码,但这种形式的编写与上面提到的其他两种形式的最终结果没有区别,只是这样编写代码要困难得多:你必须学习好的折扣;也就是说,您必须花时间学习如何去做,而不是让编译器为您完成工作。但更糟糕的是,这种方法容易出错,不建议每天使用。好的优雅的代码应该简单明了。作为 Blazor 网络开发人员,应该坚持使用能够让他在最短的时间内编写出神代码的方法......

    希望对你有帮助……

    【讨论】:

      【解决方案2】:

      我的一般指导是,如果您可以使用 .razor 语法来做到这一点,那么创建、编辑、阅读和维护总是更容易。

      但是,在某些情况下无法执行此操作。一个例子是我去年为动态组件做的一个演示:我需要渲染一个组件,但我只有 System.Type 值 - 这允许我通过代码渲染不同的组件。

      the relevant C# file

      【讨论】:

        猜你喜欢
        • 2016-08-09
        • 2011-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-05
        • 2011-01-25
        相关资源
        最近更新 更多