Angular와 ASP.NET MVC / 웹 API를 혼합 하시겠습니까?


40

ASP.NET MVC / Web API를 사용하여 왔으며 이제 Angular를 사용하기 시작했지만 올바른 혼합 방법을 모르겠습니다.

Angular를 사용하면 MVC 서버 측 개념에 여전히 가치가 있습니까? 아니면 각도 HTTP 호출에 대한 데이터를 얻기 위해 순전히 웹 API를 사용해야합니까?

VS 템플릿이 필요하지 않은 많은 것들을 추가하는 경우 사용해야하는 시작점이 더 줄어 들었습니까?

나는 서버 측 = 순수한 데이터와 클라이언트 측 = 순수한 HTML 처리의 엄격한 분리라는 아이디어를 좋아합니다.


답변:


17

가장 쉽게 생각할 수있는 방법은 서버가 상태를 제공한다는 것입니다. Angular는 해당 상태에 대한 업데이트 수집을 관리하고 서버의 웹 / API로 보낼 수 있습니다. 더 많은 단일 페이지 앱을 사용하려면 서버 측 코드가 앱의 초기 상태 일뿐입니다.

웹 API는 데이터를 앱으로 가져 오기위한 훌륭한 시작점입니다. 환경 설계 요구 사항을 충족하고 원하는 경우 엄격하게 가득 차도록 기본 rout을 최종적으로 업데이트합니다.

기본적으로 ASP4에 포함 된 라이브러리와 MVC4 템플릿에 포함 된 라이브러리가 필요합니다. 실제로 페이지에 포함되지 않은 많은 것들이 프로젝트에 포함되어 있으며 기본 페이지에서는 절대 참조하지 않습니다. jQuery를 제외한 모든 것을 안전하게 제거해야하며 jQueryUI를 사용하는 것까지도합니다. 많은 기본값이 의미가 있지만 일단 도메인 지식을 채우기 시작하면 특정 요구를 충족시키는 라이브러리를 사용하게됩니다.

엄격하게 나누더라도 서버 측 mvc는 여전히 단일 페이지 앱으로 매우 깨끗합니다. 페이지와 API 호출을 효과적으로 전달하는 것이 가장 좋은 예입니다. 또 다른 유용한 기능은 마스터 페이지를 사용하지 않거나 부분보기 인보기를 반환하는 컨트롤러입니다. Angular는 템플릿으로 채울 수있는 "보기"를 가지고 있는데,이 파일은 정적 파일이거나 경로 중 하나의 일부일 수 있습니다.

나는 오늘 당신이 코멘트를 읽고 내가 처음 언급 한 것을 보여주기 위해 데모 솔루션을 함께 던졌습니다. 이 솔루션에는 Angular와 Bootstrap 을 추가 할 때 핵심 라이브러리와 모든 파생물을 얻을 수 있지만 원래의 "fluff"가 제거되었습니다 . 그것이 nuGet을 사용하는 것의 단점입니다.

확인하십시오 : https://github.com/QueueHammer/AngularWithPartialViewViews

Angular를 배울 때 Angular-Seed 프로그램이 상당히 유용하다는 것을 알았습니다. 특히 사이트에서 데모를 시도한 후. 샘플 프로젝트는 학습에 도움이 될만큼 충분히 다릅니다. 그 후 Angular-Require-Seed를 보았지만 다른 게시물입니다. 각도 별 단계별 http://docs.angularjs.org/tutorial 각도 형 씨앗 : https://github.com/angular/angular-seed


따라서 MVC가 정상적으로 작동하는 몇 가지 서버 측 뷰를 갖는 것이 합리적입니다. 그런 다음 각 뷰마다 여러 클라이언트 측 각도 뷰가 있습니다 (일부 특정 엔티티에 대한 작성 / 세부 사항 / 편집일 수 있음). 그렇다면, 내가 MVC와 각도를 함께 사용하여 좋은 길에 저를 넣어 같은 템플릿을 찾을 수 있으면 좋겠다
punkouter

데모 프로젝트에 대한 링크를 추가하고 처음 Angular를 살펴보기 시작했습니다. 나는 일반적으로 SPA와 다음 몇 달 동안 아키텍처 문제를 해결하는 더 나은 패턴 / 라이브러리에 대해 블로그로 다룰 것입니다. 할 때 내 게시물을 업데이트하겠습니다.
QueueHammer

당신의 링크를 얻었습니다. 데모를 보았습니다. 첫 번째 질문은 .. 그래서 .. 시작하는 메인 페이지로 ASP.NET MVC 기능을 그대로 유지하고 있습니다. 그 페이지를 넘어 서면 다른 모든 부분은 각도 부분 뷰입니다 .. 두 개의 메인 ASP를 가질 수 있습니까? NET MVC 뷰? 다시 말해 ASP.NET MVC 뷰는 각도 부분 뷰의 부모입니다. 예를 들어 .. 아마도 하나의 ASP.NET 뷰 아래의 모든 부분 뷰를 원하지는 않습니다. 보여줄 수 있습니까? 내가 생각하기에 좋은 출발점을 마련한 이유는 무엇인가?
punkouter

그리고 partialsController.cs의 요점은 무엇입니까?
punkouter

부분을 ​​거의 모든 곳에 넣을 수 있습니다. 뷰당 동작으로 더 많은 컨트롤러를 만들 수 있습니다. 프로젝트의 "outialsController.cs"를 사용하여 각도 앱 모듈에 정의 된 뷰와 일치합니다. 따라서 partial / view1은 partials 컨트롤러를 호출하고 viewOne 조치를 가져 와서 ViewOne보기를 가져옵니다. 작업에서 View ()를 호출 할 수 있습니다. 문자열 매개 변수를 사용하면 뷰의 위치를 ​​전달합니다. 따라서 원하는 방식으로 구성 할 수있는 유연성이 있습니다.
QueueHammer

18

VS 템플릿이 필요하지 않은 많은 것들을 추가하는 경우 사용해야하는 시작점이 더 줄어 들었습니까?

이 VS 템플릿은 처음에 초기 설정 및 학습 곡선을 정리하는 데 좋지만 실제 프로젝트 요구에 맞게 사용자 정의해야합니다.

예를 들어,이 사이트 http://www.reviewstoshare.com 에서 내 친구는와 AngularJS함께 사용 ASP.NET MVC합니다. 이 사이트는 필요에 따라 페이지 상호 작용을 위해 ASP.MVC + Jquery를 사용하여 이미 구축되었습니다.

반면에 댓글, 투표, 신고 등과 같은 사이트에는 여전히 "Ajaxy"특성이 있습니다. Stackoverflow 자체와 크게 다르지 않습니다. AngularJS 이전에는 $(document).ready()콜백 내의 Jquery 플러그인과 함수가 혼란 스러웠 으며 JS 코드는 테스트 할 수 없었습니다.

전반적 으로 두 가지를 적절히 혼합 하면 사이트가 매끄럽고 기능적입니다.

여기에 이미지 설명을 입력하십시오

보기 좋은 참고 자료 :


또는 앵귤러 부분 페이지 모음 아래에 몇 가지 일반적인 MVC 뷰가 도움이되지 않을 것입니다 (위의 주석에서 언급했듯이)
punkouter

SEO 문제는 최신 업데이트로 해결되었습니다.
EL Yusubov

3
따라서 비판하지 말고 차트의 부정적인 말이 실제로 x 축 아래에 있지 않습니까? 그렇게하면 차트가 계속 확장되는 죄파처럼 보일 것입니다. 나는 당신의 차트가 아니라 나쁜 과학을 알고 있습니다.
QueueHammer

12
QueueHammer 당신은 파티에서 정말 재미 있어야합니다. :-)
Thomas 재고

1
나는 'Very Cool!'의 양쪽에 파도의 두 개의 낮은 지점에 완전히 붙어 있습니다. 하나의 칙칙한 지옥을 결합한 거품.
MetaGuru
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.