Визуализация представлений в Blazor и MVC - PullRequest
1 голос
/ 25 октября 2019

Я использую .Net уже несколько лет, но всегда как API, поэтому я никогда не делал MVC или Razor. Теперь выходит Blazor, и, похоже, стоит попробовать весь стек .Net.

При использовании Blazor, где можно визуализировать списки элементов?

MVC и Razor работают как PHP, вывыкладывать клиенту прямо html / js со всеми предметами и прочим уже в них. В Angular и других SPA вы попадаете в back-end API, получаете данные и отрисовываете все front-end.

Предполагается, что Blazor будет заменой SPA, поэтому он должен отображаться во внешнем интерфейсе? (Да, серверная сторона делает DOM diff и передает его, но в этом случае внешний интерфейс визуализируется). Но тогда почему все говорят об использовании MVC или Razor с ним?

Ответы [ 2 ]

1 голос
/ 25 октября 2019

TL; DR

Model View Controller (MVC) - это шаблон проектирования, предназначенный для разделения данных и способа их отображения.

ASP.NET MVC использует этот шаблон MVC, но он не является эксклюзивным для ASP.NET и является одинаково допустимым для заполнения веб-страницы как на стороне клиента, так и на стороне сервера.

Razor - это один из многих синтаксисов, которые можно использовать для части «Вид» в контроллере вида модели.

Более длинный ответ

Ответ на два вопроса по отдельности:

Почему упоминается MVC

MVC может появиться по нескольким причинам. Во-первых, многие люди хотят включить Blazor в существующие сайты MVC, поэтому вы видите упоминание MVC в этом контексте. Blazor хорошо работает там, потому что он рад существовать вместе с другой технологией (например, ASP.NET MVC , а также не-.NET сайтов ).

В более общем смысле,MVC означает не только ASP.NET MVC, но и действительно относится к шаблону проектирования Model View Controller , который является одним из способов разделения проблем между концепциями данных, отображаемых на странице (модель), способ визуализации (представление) и помещение данных в шаблон визуализации (контроллер).

В ASP.NET MVC контроллер живет на сервере и размещает там данные модели в представлении, но это не обязательно так, это так же верно, чтобы получить данные на клиенте (из API), а затем заполнить представление на стороне клиента тоже. Именно так работают внешние интерфейсные фреймворки, такие как Angular.

По мере роста вашего приложения Blazor вы, вероятно, обнаружите, что хотите разделить способ визуализации страницы, то, что извлекает данные, данныесам и состояние вашего приложения. На этом этапе шаблоны проектирования могут помочь.

Использование шаблона MVC в клиентской части Blazor на первый взгляд может показаться невозможным, поскольку маршрутизация разрешает входящие запросы страниц к страницам Blazor, а не классам Controller, как это происходит в ASP.NET MVC, но можно подуматьБлейзор Пейдж сам как контролер. Страница эффективно получает данные (модель) откуда-то и комбинирует их с кодом Razor (представлением), который и предназначен для контроллера.

Другие шаблоны представления, например, MVVM, также могут быть полезны,также можно указать такие шаблоны, как Flux или Redux .

Важно отметить, что команда Blazor заявила, что они пытаются сделать шаблон Blazor независимым. Вот цитата Дана Рота об этом:

Наша цель с Blazor - нацелить широкую аудиторию на веб-разработчиков, поэтому мы специально не нацелены на совместимость с WPF / UWP /Xamarin.Forms. Мы также пытаемся предоставить вам гибкость в использовании шаблонов, которые вы хотите, не слишком выпекая в фреймворке. Таким образом, вы должны быть в состоянии реализовать шаблоны MVVM поверх основных концепций Blazor

Какое дело с Razor?

Razor - это синтаксис для описания того, как всеили часть страницы должна отображаться в HTML, т. е. это язык, который можно использовать для описания способа отображения представления в контроллере представления модели.

Поскольку на стороне клиента Blazor определяет способ представления страницы, нам нужно что-то, что мы можем использовать для описания этого, и именно здесь Razor приходит. Microsoft решила повторно использовать тот же синтаксис / язык Razor, который использовалсядля серверного ASP.NET MVC для Blazor, который уже знаком разработчикам, работавшим с ASP.NET и помогающим переносить части существующих сайтов в Blazor, в отличие от принятия чего-то вроде, скажем, Handlebars синтаксис.

'Blazor должен быть заменой SPA'

Одно замечание: Blazor можно использовать для создания одностраничных приложений, но его не нужно использовать таким образом. Например, мы используем Blazor для добавления функциональности в существующий сайт ASP.NET MVC. В этом случае сервер отображает страницу MVC, которая содержит заполнитель для функциональности Blazor для этой страницы. Blazor обладает хорошими возможностями JS Interop, поэтому может успешно сосуществовать с существующими страницами.

0 голосов
/ 25 октября 2019

Blazor приложения включают в себя Razor компонентов . Razor - это шаблонный синтаксис, используемый в компонентах Razor (и Razor Pages и представлениях MVC). В ASP.NET Core инфраструктура MVC включает в себя веб-API, который является серверной структурой внутреннего интерфейса, которую вы, скорее всего, будете использовать для приложений Blazor.

В серверной части Blazor приложение Blazor размещается на странице Razor ( _Host.cshtml ).

Razor Pages является рекомендуемой средой для серверного HTMLпоколение. Команда ASP.NET Core эффективно рекомендует использовать только ASP.NET Core MVC для API в будущем.

...