Когда я должен генерировать html, используя RenderTreeBuilder вместо Razor синтаксиса - PullRequest
2 голосов
/ 05 февраля 2020

С помощью Blazor мы можем генерировать элементы Html компонента, используя синтаксис Razor или переопределяя BuildRenderTree(RenderTreeBuilder builder).

Я заметил, что те, кто пишет библиотеки, обычно предпочитают создавать один файл .cs для компонента, определяющего Html элементов внутри BuilderRenderTree метода. Вместо этого, те, кто пишет проект, предпочитают создавать два файла для каждого компонента (Html в .razor и logi c .cs) или один файл .razor (Html и logi c в одном месте).

Я уже прочитал

Итак, мой вопрос

Почему (и когда) я должен переопределить BuilderRenderTree?

Ответы [ 2 ]

3 голосов
/ 05 февраля 2020

Мое общее руководство заключается в том, что если вы можете сделать это с использованием синтаксиса .razor, его всегда проще создавать, редактировать, читать и поддерживать.

Однако в некоторых случаях это невозможно сделать. Одним из примеров является демонстрация, которую я сделал в прошлом году для динамических c компонентов: мне нужно отобразить компонент, но у меня есть только значение System.Type - это позволяет мне отображать различные компоненты с помощью кода.

См. соответствующий C# файл

2 голосов
/ 05 февраля 2020

Вообще говоря, есть три основных способа создания ваших компонентов

  • Использование одного файла (расширение .razor) из двух частей: Часть представления компонента, содержащая C# Разметка Razor, включая директивы, et c. и Html разметка, и часть кода, которая помещается в блоки @code. Это самый простой способ написания кода. Это также мой любимый способ. Все установлено на мой взгляд.

  • Другие предпочитают разделять описанный выше файл на два отдельных файла: первый предназначен для части просмотра компонента Razor и имеет расширение файла .razor; вторая часть является частью кода представления с расширением .razor.cs, в настоящее время вы можете определить как частичный класс. Мне трудно работать с двумя связанными файлами.

  • Третий вариант - это отдельный файл с кодом для создания дерева рендеринга путем переопределения метода BuildRenderTree. Вы правы в том, что автор компонента обычно кодирует в таком стиле, но нет никакой разницы в конечном результате между этой формой аутентификации и двумя другими, упомянутыми выше, за исключением того, что такой код гораздо сложнее: вы должны научиться отличная сделка; то есть вы должны потратить время на изучение того, как это сделать, вместо того, чтобы компилятор сделал всю работу за вас. Но что еще хуже, этот метод подвержен ошибкам и не рекомендуется ежедневно. Хороший и элегантный код должен быть простым и понятным. И как веб-разработчик Blazor следует придерживаться методов, которые позволяют ему писать код бога в кратчайшие сроки ...

Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...