Смешивание угловых и ASP.NET MVC / Web API?


40

Я пришел с использованием ASP.NET MVC / Web API, и теперь я начинаю использовать Angular, но я не знаю, как правильно их смешивать.

После того, как я использую Angular, концепции на стороне сервера MVC все еще дают какое-либо значение? Или я должен строго использовать веб-API исключительно для получения данных для угловых HTTP-вызовов?

Есть ли более урезанная отправная точка, которую я должен использовать, если шаблон VS добавляет много вещей, которые мне не нужны?

Мне нравится идея строгого разделения серверной части = чистых данных и клиентской = чистой обработки HTML.


Ответы:


17

Самый простой способ думать об этом - сервер обслуживает состояние. Angular может управлять сбором обновлений до этого состояния и отправлять их в web / api на сервере. Если вы хотите использовать больше одностраничных приложений, то код на стороне сервера будет просто начальным состоянием вашего приложения.

Веб-API - это отличное место для начала загрузки ваших данных в ваше приложение. В конечном итоге вы обновите маршруты по умолчанию, чтобы они соответствовали вашим требованиям к проектированию среды и, если хотите, были полностью переполнены.

Существует несколько библиотек, которые ASP4 включены по умолчанию, и они также были включены в шаблоны MVC4. На странице действительно есть много вещей, которые не нужны, а также включены в проект и даже не упоминаются на страницах по умолчанию. Вы должны быть в безопасности, удаляя все, кроме jQuery, а я даже захожу так далеко, что убираю jQueryUI. Многие из значений по умолчанию имеют смысл, но как только вы начнете заполнять свои знания предметной области, вы будете использовать библиотеки, которые соответствуют вашим конкретным потребностям.

Даже при строгом разделении вы обнаружите, что серверная часть mvc по-прежнему очень чистая поддержка одностраничного приложения. Эффективная маршрутизация при доставке вашей страницы и ваших вызовов API является ярким примером. Еще одна полезная функция - это контроллеры, которые возвращают представления, которые не используют главную страницу или являются только частичным представлением. Angular имеет «представление», которое он может заполнить шаблоном, который может быть статическим файлом или частичным из одного из ваших маршрутов.

Я прочитал ваш комментарий ранее сегодня и собрал демонстрационное решение, чтобы показать то, что я первоначально упомянул. В решении также убраны некоторые оригинальные «пух», хотя при добавлении Angular и Bootstrap вы получаете базовые библиотеки и все производные. Это компромисс с использованием NuGet.

Проверьте это: https://github.com/QueueHammer/AngularWithPartialViewViews

В изучении Angular я нашел программу Angular-Seed довольно полезной. Особенно после того, как я попробовал демоверсии на их сайте. Пример проекта настолько отличается, что помогает вам учиться. После этого я посмотрел на Angular-Require-Seed, но это еще один пост. Угловой шаг за шагом http://docs.angularjs.org/tutorial Угловое семя: https://github.com/angular/angular-seed


Поэтому имеет ли смысл иметь несколько видов на стороне сервера, как обычно работает MVC ... и затем для каждого из этих видов будет несколько угловых видов на стороне клиента (возможно, создание / детализация / редактирование для некоторой конкретной сущности). Если это так, то я бы хотел найти такой шаблон, который
помог

Добавил ссылку на демонстрационный проект и там, где я впервые начал изучать Angular. Я собираюсь написать блог о SPA в целом и о некоторых из лучших шаблонов / библиотек, которые решают свои архитектурные проблемы в течение следующих нескольких месяцев. Я обновлю свой пост, когда я сделаю.
QueueHammer

только что получил вашу ссылку .. посмотрел на демо. выглядит хорошо ... первый вопрос ... так что ... Вы сохраняете функциональность ASP.NET MVC в качестве главной страницы, с которой вы начинаете ... за пределами этой страницы все остальное - угловые частичные представления. Не могли бы вы иметь ДВА основных ASP. NET MVC просмотров? другими словами ... представление ASP.NET MVC является родителем угловых частичных представлений ... например ... может быть, я не хочу ВСЕ частичные представления в ОДНОМ представлении ASP.NET ... имеет ли это смысл? Не могли бы вы показать мне это? Это то, что поставило меня в хорошее место для отправной точки, я думаю .... или, может быть, то, что я говорю, не имеет смысла?
августа

и какой смысл в partialsController.cs, поскольку он никогда не вызывает ничего из этого?
августа

Вы можете поставить частичные почти в любом месте. Вы могли бы создать больше контроллеров с действием для каждого вида, я использовал один "partialsController.cs", чтобы маршруты в проекте совпали с представлениями, определенными в модуле приложения angular. Таким образом, serial / view1 вызывает контроллер partials и получает действие viewOne, которое затем получает представление ViewOne. В своих действиях вы можете вызвать View (); с помощью строкового параметра передайте местоположение вашего представления. Таким образом, у вас есть возможность организовать его практически так, как вам нравится.
QueueHammer

18

Есть ли более урезанная отправная точка, которую я должен использовать, если шаблон VS добавляет много вещей, которые мне не нужны?

Эти шаблоны VS хороши для того, чтобы урезать начальную настройку и кривую обучения в начале, однако вам нужно будет настроить их для своих реальных потребностей проекта.

Например, на этом сайте http://www.reviewstoshare.com мой друг использует AngularJSвместе с ASP.NET MVC. Имейте в виду, что этот сайт уже был создан с использованием ASP.MVC + Jquery для взаимодействия на странице по мере необходимости.

С другой стороны, на сайте все еще присутствует некоторая природа Ajaxy, такая как комментарии, голосование, пометки и т. Д. Не слишком отличается от самого Stackoverflow. До AngularJS это был беспорядок плагинов и функций Jquery в $(document).ready()callback, не говоря уже о том, что код JS не был тестируемым.

В целом, правильное сочетание делает ваш сайт привлекательным и функциональным.

введите описание изображения здесь

Несколько хороших ссылок, чтобы посмотреть:


Или, если под коллекцией угловых частичных страниц есть несколько обычных просмотров MVC, это не поможет (как я упоминал в моем комментарии выше)
punkouter

Это правда, проблемы SEO были решены свежими обновлениями.
Е.Л. Юсубов

3
Таким образом, не для того, чтобы критиковать, но разве отрицательные утверждения на графике не будут ниже оси X? Это сделало бы диаграмму похожей на постоянно расширяющуюся волну греха. Я знаю, что это не ваша карта, а плохая наука.
QueueHammer

12
QueueHammer Вы должны быть действительно весело на вечеринках. :-)
Томас Сток

1
Я полностью застрял в двух нижних точках волны по обе стороны от «Очень круто!» пузырь, как один комбинированный хреновый угловой ад.
MetaGuru
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.