Каков принцип работы SPA приложений в ASP.NET Core?
Разбираюсь с ASP.NET и SPA приложениями. Возник вопрос, как совмещается ASP.NET Core с SPA создаваемый с Angular.Js.
К примеру у меня есть WEB API приложение которое работает на Web Сервере и принимает запросы по HTTP. У меня есть так же отдельное приложение(клиент, которое общается с WEB API по HTTP). Сам клиент состоит из множества страниц, все они написаны на обычном ASP.NET без всякой интерактивности.
Я правильно понимаю, чтобы мне добавить поддержку SPA c Angular.Js мне нужно, чтобы мое приложение было разбито на страницы по функциональности. Например: форум, магазин, обратная связь. При переходе на страницу например форум, у меня страничка по отношению к главной например обновляется полностью, и уже становиться как страница SPA. Теперь мне нужно добавить на нее уже поддержку Angular.js и отправлять запросы уже для обновления части страницы асинхронно. И как бы страница с форуммом уже у меня не будет перезагружаться. Но если я перейду на страницу магазин, у меня отработает контроллер из ASP.NET, вернет мне нужный View, страница перерисуется полностью и снова на этой страничке я могу уже использовать SPA c Angular.Js пока не перейду на следущую, где снова вызовется контроллер Asp.Net! Правильно я понимаю взаимодействие ASP.NET и SPA Angular.Js?
Да, правильно. Добавлю, что т.к. теперь ваше WebAPI это основной поставщик данных на клиент (в браузер), то в идеальном случае вам вообще больше не нужны View - достаточно вернуть статику (скрипты и основую страницу приложения) с веб-сервера. Т.е. в идеальном SPA ASP.NET остается только для WebAPI.
Да, можно так, хотя это уже не будет называться SPA, а обычный сайт, на котором вставлены интерактивные UI элементы. Кстати, возможно лучше с этой задачей справится React а не Angular; в Facebook-e используется очень похжий подход, когда сайт состоит из обычных веб-страниц (не SPA), а внутри них уже содержатся один или несколько интерактивных UI элементов на базе React. Если интересно как делать полноценный SPA на базе ASP.NET Core, можно посмотреть вот эту заготовку => ASP.NET Core Starter Kit на GitHub.