В ASP.NET Core 2.2 было довольно просто иметь веб-сайт ASP.NET Core с интерфейсом React и работающим рендерингом на стороне сервера - поскольку SSR поддерживался "из коробки" в шаблоне ASP.NET Core + React , который внутренне запускает NodeServices
для выполнения JavaScript с использованием узла.
Однако с ASP.NET Core 3.1 все уже не так просто, в основном потому, что классы SpaServices
и NodeServices
объявлены устаревшими и будут удалены в .NET 5, согласно эта ссылка. Так что больше не нужно выполнять javascript с узлом из C #.
Теперь, помимо информации о том, что рендеринг на стороне сервера, предложенный в ASP.NET Core 2.2, теперь устарел, единственное предложение о том, как двигаться дальше, я нашел из статьи выше:
Чтобы включить такие функции, как предварительный рендеринг на стороне сервера и перезагрузка горячего модуля, пожалуйста, обратитесь к документации для соответствующих платформ SPA.
Но если я правильно понимаю, чтобы иметь основанный на реакции рендеринг на стороне сервера, мне нужен сервер node.js, который будет выполнять рендеринг на стороне сервера.
Означает ли это, что если я хочу иметь веб-сайт ASP.NET Core 3.1 с внешним интерфейсом React с SSR - у меня должен быть один проект ASP.NET Core для WebAPI и другой отдельный проект Node.JS для внешнего интерфейса. конец с SSR?
А затем развернуть их на двух отдельных службах приложений Azure?
Это рекомендуемая архитектура для проектов ASP.NET Core + React?
2 ответа
Потратив некоторое время на исследования, вот текущие варианты:
- Работайте на .NET Core 3.1 с
NodeServices
с флагомobsolete
- Создайте отдельные проекты для back-end (asp.net) и front-end (node.js)
- Форк / копировать
NodeServices
и поддерживать самостоятельно - Надеюсь, что в ближайшие месяцы перед выпуском .NET 5, где он будет в конце концов удален, будет
NodeServices
управляемый сообществом форк
Я столкнулся с точно такой же проблемой. Мне потребовалось несколько недель, чтобы создать новую установку, где внешний интерфейс отделен от внутреннего.
Я опубликовал подготовленный стандартный шаблон на GitHub и написал посты в блоге. здесь объясняется, как включить серверный рендеринг с ASP.NET Core и React в деталях. Решение представляет собой комбинацию CRA (Create React App), сборника рассказов для CRA и стандартного шаблона ASP.NET Core MVC.
Короче говоря, я создал собственные атрибуты asp-prerender-module и asp-prerender-data. Они общаются с сервером Express на основе Node.js для получения отрендеренного HTML. После этого HTML-код, предоставляемый браузеру, «увлажняется» действиями.
Похожие вопросы
Новые вопросы
asp.net
ASP.NET - это среда разработки веб-приложений Microsoft, которая позволяет программистам создавать динамические веб-сайты, веб-приложения и веб-службы. Полезно использовать этот тег в сочетании с тегом типа проекта, например, [asp.net-mvc], [asp.net-webforms] или [asp.net-web-api]. НЕ используйте этот тег для вопросов о ASP.NET Core - используйте вместо этого [asp.net-core].