Zacząłem uczyć się AngularJS i ASP.NET MVC, ale nie jestem pewien, dlaczego używać ich obu razem w tym samym projekcie?
Czy nie są to oba frameworki MVC? Czy powinienem używać ich obu w tej samej aplikacji? Czy to nie jest jedno czy drugie?
źródło
Zacząłem uczyć się AngularJS i ASP.NET MVC, ale nie jestem pewien, dlaczego używać ich obu razem w tym samym projekcie?
Czy nie są to oba frameworki MVC? Czy powinienem używać ich obu w tej samej aplikacji? Czy to nie jest jedno czy drugie?
Jeśli budujesz aplikację jednostronicową (SPA) , prawdopodobnie nie potrzebujesz „MVC” w ASP.NET MVC . Widoki, szczególnie widoki dynamiczne, są prawdopodobnie dostarczane / modyfikowane po stronie klienta. Kątowe uchwyty tak dobrze.
Ale może nie chcesz 100% SPA. Co wtedy Wyobraź sobie zamiast tego 10 stron, ale 10 stron, które są bardzodynamiczny. Po zalogowaniu się użytkownika w prawym rogu pojawi się mała plakietka użytkownika. To nie jest dynamiczne. Pokazuje tylko kilka fajnych rzeczy, takich jak „wynik” użytkownika i jego najnowsze selfie. Sprytne rzeczy przechowujesz w pamięci podręcznej, aby można je było łatwo odzyskać. Teraz możesz przejść na dwa sposoby. Jeśli jesteś purystą MVC po stronie klienta, po prostu pobierasz dane znaczka po dostarczeniu początkowego ładunku HTML, podobnie jak wszystkie inne dane. Ale może nie jesteś purystą. Może jesteś przeciwieństwem purysty. Może jesteś impurystą. Zamiast dostarczać początkowy kod HTML, dostarczać trochę kodu JavaScript, który będzie przesyłany z powrotem na serwer, przesyłaj za pomocą JavaScript, aby pobrać dane znaczków, a następnie ostatecznie scalić te dane w widoku za pomocą MVC po stronie klienta,to jako twój początkowy HTML. Po dostarczeniu początkowego kodu HTML kontynuujesz typowe wygłupy MVC po stronie klienta.
Więc ... MVC na serwerze i na kliencie to tylko wygodny sposób na uporządkowanie kodu, który był bałaganem w 2001 roku. Nie musisz wybierać jednego lub drugiego. Możesz wybrać jedno i drugie. To prawda, że im więcej robisz po dostarczeniu początkowego kodu HTML, tym mniej potrzebujesz MVC po stronie serwera. Mimo to jest do Twojej dyspozycji, jeśli potrzebujesz. Na przykład pracowałem nad aplikacją ASP.NET MVC / Angular, w której zewnętrznymi szablonami Angular może być .NET MVC ActionResult. Oznacza to, że kontroler serwera może scalić dane z jego widokiem, dostarczyć je do Angulara jako szablon, a kontroler Angulara może następnie scalić swoje dane z tym widokiem. Nie twierdzę, że to dobry pomysł, ale pokazuje tylko, że jedna forma MVC nie powoduje, że druga jest przestarzała.
Poza tym, bez względu na to, jak wdrożysz Angular, będziesz potrzebować sposobu na dostarczenie początkowego kodu HTML, szablonów i, co najważniejsze, danych. Dlaczego nie skorzystać z platformy, która to ułatwia? Istnieje wiele, ale .NET MVC nie jest garbaty. Tak jak powiedziałem, możesz sprawić, że początkowe szablony HTML i zewnętrzne Angular będą efektem akcji MVC, ale jeszcze lepiej, możesz użyć interfejsu API sieci .NET do dostarczania danych. Web API jest tak smaczny jak kompot morelowy.
Podsumowując: MVC to tylko wzór. Możesz użyć tego wzoru na dowolnej liczbie warstw fizycznych. Nie można go zużyć. Używaj go swobodnie, jeśli ma to sens. Poza tym Angular i tak może nie być MVC (tak mówią ludzie, którym zależy na tych rzeczach), więc możesz go używać z narzędziem, które ma w nazwie „MVC”. Do diabła, nawet jeśli jest to MVC, miksuj i dopasowuj według potrzeb.
ASP.NET MVC jest strukturą po stronie serwera; nie ma znaczenia, jakich bibliotek JavaScript używasz. AngularJS to biblioteka po stronie klienta, która nie dba o to, jaka technologia po stronie serwera zasila witrynę - może to być Python, ASP.NET MVC, a nawet zwykły stary zbiór statycznych plików HTML przechowywanych bezpośrednio na dysku.
Zarówno ASP.NET MVC, jak i AngularJS są kompatybilne i istnieje wiele projektów, które wykorzystują je razem.
Czy potrzebujesz obu? Nie całkiem. Zależy to całkowicie od potrzeb twojego projektu.
Jeśli Twoja witryna jest dynamiczna, musisz użyć skryptów po stronie serwera. Możesz użyć ASP.NET, a fakt, że używasz AngularJS, nie spowoduje, że kod po stronie serwera będzie bardziej MVC. Jeśli chcesz mieć możliwość skonfigurowania aplikacji po stronie serwera jako MVC, raczej wybierzesz ASP.NET MVC.
Podobnie fakt, że używasz ASP.NET MVC, nie implikuje niczego o strukturze kodu po stronie klienta. Możesz umieścić cały JavaScript w jednym pliku bez zastanowienia się nad strukturą i być z tego zadowolonym (dopóki projekt nie zacznie się rozwijać). Tutaj ponownie AngularJS przedstawia się jako sposób na uporządkowanie aplikacji po stronie klienta.
Uwaga dodatkowa: otagowałeś swoje pytanie ASP.NET MVC 3. O ile nie jest to starszy projekt, który musisz utrzymać lub nie masz określonych ograniczeń podczas hostowania aplikacji na starszych serwerach, które nie były aktualizowane przez ostatnie cztery lata, możesz użyć ASP Zamiast tego .NET MVC 4 lub 5.
źródło
Jeśli korzystasz z Visual Studio, jest nowy szablon strony internetowej MVC „aplikacja pojedynczej strony”, który zawiera kontrolery kątowe i MVC Web Api.
Działa to dobrze, ponieważ kod po stronie serwera MVC zapewnia punkty końcowe json do wywołania kątowego kodu po stronie klienta.
Dodatkowo możesz użyć kontrolerów MVC do obsługi podstawowego widoku HTML lub widoków dla aplikacji na jednej stronie. daje to moc generowania po stronie serwera, autoryzacji, przekierowań, obsługi błędów itp
Często potrzebujesz niewielkiej ilości html / javascript generowanej przez serwer nawet na jednej stronie aplikacji, takich jak adresy URL punktów końcowych dla różnych środowisk, różnych języków, a nawet dziwne strony uwierzytelniające, które mogą być łatwiejsze do wykonania po stronie serwera.
źródło
3 lata później użyj ASP.NET Web API do obsługi danych, a Angular (js lub nowszy) do struktury aplikacji po stronie klienta. Jeśli tworzysz witrynę statyczną, po prostu użyj ASP.NET MVC.
źródło