Mieszanie interfejsu Angular i ASP.NET MVC / Web?

40

Pochodzę z używania ASP.NET MVC / Web API i teraz zaczynam używać Angulara, ale nie jestem pewien, jaki jest właściwy sposób ich mieszania.

Kiedy używam Angulara, czy koncepcje po stronie serwera MVC nadal zapewniają jakąkolwiek wartość? A może powinienem używać interfejsu API sieci Web wyłącznie do pozyskiwania danych dla kątowych połączeń HTTP?

Czy jest może bardziej uproszczony punkt początkowy, którego powinienem użyć, jeśli szablon VS dodaje wiele rzeczy, których nie potrzebuję?

Podoba mi się pomysł ścisłego podziału strony serwera = czyste dane, a strona klienta = czyste przetwarzanie HTML.

punkouter
źródło

Odpowiedzi:

17

Najprościej jest o tym pomyśleć, że serwer obsługuje stan. Angular może zarządzać zbieraniem aktualizacji do tego stanu i wysyłaniem go do sieci / interfejsu API na serwerze. Jeśli chcesz korzystać z większej liczby aplikacji jednostronicowych, kod po stronie serwera będzie tylko początkowym stanem aplikacji.

Interfejs API sieci Web jest doskonałym miejscem do rozpoczęcia pobierania danych do aplikacji. W końcu zaktualizujesz domyślne trasy, aby spełnić wymagania projektowe środowiska, a jeśli chcesz, będziesz ściśle wypełniony.

Istnieje kilka bibliotek, które ASP4 domyślnie zawiera, a także te, które zostały zawarte w szablonach MVC4. Na stronie znajduje się naprawdę wiele rzeczy, które nie są potrzebne, a także projekty uwzględnione w projekcie i nigdy nie przywoływane przez ich domyślne strony. Powinieneś być bezpieczny, usuwając wszystko oprócz jQuery, a ja nawet posunąłem się nawet do wyjęcia jQueryUI. Wiele wartości domyślnych oznacza dobrze, ale kiedy zaczniesz uzupełniać wiedzę o swojej domenie, będziesz używać bibliotek lib, które spełniają twoje specyficzne potrzeby.

Nawet przy ścisłym podziale przekonasz się, że mvc po stronie serwera nadal stanowi bardzo czyste wsparcie dla aplikacji na jednej stronie. Skuteczny routing w dostarczaniu strony i połączeń API jest doskonałym przykładem. Kolejną przydatną funkcją są kontrolery, które zwracają widoki, które nie używają strony wzorcowej lub są tylko widokiem częściowym. Angular ma „widok”, który może wypełnić szablonem, który może być plikiem statycznym lub częściowym z jednej z twoich tras.

Przeczytałem wam dzisiaj komentarz i przygotowałem rozwiązanie demonstracyjne, aby pokazać to, o czym pierwotnie wspomniałem. W rozwiązaniu usunięto również część oryginalnego „puchu”, ale po dodaniu Angulara i Bootstrapa dostajesz biblioteki podstawowe i każdą pochodną. To jest kompromis korzystania z nuGet.

Sprawdź to: https://github.com/QueueHammer/AngularWithPartialViewViews

W nauce Angulara uznałem program Angular-Seed za dość pomocny. Zwłaszcza po wypróbowaniu wersji demo na ich stronie. Przykładowy projekt jest na tyle inny, że pomaga Ci się uczyć. Potem spojrzałem na Angular-Require-Seed, ale to kolejny post. Angular Krok po kroku http://docs.angularjs.org/tutorial Angular Seed: https://github.com/angular/angular-seed

QueueHammer
źródło
Czy miałoby to sens, aby mieć kilka widoków po stronie serwera, czyli normalnie działa MVC .. a następnie dla każdego z tych widoków będzie wiele widoków kątowych po stronie klienta (być może tworzenie / szczegóły / edycja dla jakiegoś konkretnego elementu) .. Jeśli tak, to chciałbym znaleźć taki szablon, który postawiłby mnie na dobrej drodze do używania MVC i
Angulara
Dodano link do projektu demo i gdzie po raz pierwszy zacząłem przeglądać Angular. Zamierzam blogować ogólnie o SPA i niektórych lepszych wzorach / bibliotekach, które rozwiązują ich wyzwania architektoniczne w ciągu najbliższych kilku miesięcy. Kiedy to zrobię, zaktualizuję swój post.
QueueHammer
właśnie dostałem twój link .. spojrzał na demo. wygląda dobrze .. pierwsze pytanie brzmi ... więc ... Utrzymujesz funkcjonalność ASP.NET MVC jako główną stronę, od której zaczynasz ... poza tą stroną wszystko inne jest częściowymi widokami kątowymi .. Czy możesz mieć DWIE główne ASP. Widoki NET MVC? innymi słowy ... widok ASP.NET MVC jest rodzicem kątowych widoków częściowych .. na przykład ... może nie chcę WSZYSTKICH widoków częściowych w JEDNYM widoku ASP.NET .. czy to ma sens? Czy możesz mi to pokazać? Myślę, że to, co postawiło mnie w dobrym miejscu na początek ... a może to, co mówię, nie ma sensu?
punkouter
a jaki jest sens pliku partssController.cs, ponieważ nigdy nie wywołuje żadnego z nich?
punkouter
Możesz umieścić częściowe prawie wszędzie. Możesz zrobić więcej kontrolerów za pomocą akcji na widok, użyłem jednego „partssController.cs”, trasy w projekcie pasują do widoków zdefiniowanych w module aplikacji kątowej. Tak więc, partial / view1 wywołuje kontroler częściowy i pobiera akcję viewOne, która następnie otrzymuje widok ViewOne. W akcjach możesz wywołać View (); z parametrem ciągu przekazuje lokalizację twojego widoku. Masz swobodę organizowania go w dowolny sposób.
QueueHammer
18

Czy jest może bardziej uproszczony punkt początkowy, którego powinienem użyć, jeśli szablon VS dodaje wiele rzeczy, których nie potrzebuję?

Te szablony VS są dobre, aby skrócić początkową konfigurację i krzywą uczenia się na początku, jednak trzeba je dostosować do rzeczywistych potrzeb projektu.

Na przykład na tej stronie http://www.reviewstoshare.com mój przyjaciel używa AngularJSrazem z ASP.NET MVC. Należy pamiętać, że ta strona została już zbudowana przy użyciu ASP.MVC + Jquery do interakcji na stronie w razie potrzeby.

Z drugiej strony na stronie jest jeszcze trochę „Ajaxy”, takich jak komentarze, głosowanie, oflagowanie itp. Nie różni się zbytnio od samego Stackoverflow. Przed AngularJS był bałagan wtyczek Jquery i funkcji w $(document).ready()wywołaniu zwrotnym, nie wspominając już o tym, że kod JS nie był bardzo testowalny.

Ogólnie rzecz biorąc, odpowiednie połączenie obu sprawia, że ​​witryna jest gładka i funkcjonalna.

wprowadź opis zdjęcia tutaj

Kilka dobrych odniesień do wyglądu:

EL Yusubov
źródło
Lub jeśli pod zbiorem kątowych częściowych stron znajduje się kilka regularnych widoków MVC, to by nie pomogło (jak wspomniałem w moim powyższym komentarzu)
punkouter
To prawda, problemy z SEO zostały rozwiązane przez nowe aktualizacje.
EL Yusubov,
3
Nie krytykując, ale czy negatywne stwierdzenia na wykresie nie znajdowałyby się poniżej osi x? To sprawiłoby, że wykres wyglądałby jak stale rosnąca fala grzechu. Wiem, że to nie twoja mapa, ale zła nauka.
QueueHammer
12
QueueHammer musisz być prawdziwą zabawą na imprezach. :-)
Thomas Stock
1
Utknąłem całkowicie w dwóch dolnych punktach fali po obu stronach „Very Cool!” bańka, jak jeden gówniany piekło kątowe.
MetaGuru,