AngularJS와 ASP.NET MVC를 모두 사용해야합니까? ASP.NET MVC를 배우기 시작했지만

AngularJS와 ASP.NET MVC를 배우기 시작했지만 왜 같은 프로젝트에서 두 가지를 함께 사용해야하는지 잘 모르겠습니까?

둘 다 MVC 프레임 워크가 아닙니까? 같은 응용 프로그램에서 둘 다 사용해야합니까? 둘 중 하나입니까?



답변

단일 페이지 애플리케이션 (SPA)을 빌드하는 경우 ASP.NET MVC 에서 “MVC”가 필요하지 않을 수 있습니다 . 뷰, 특히 동적 뷰는 클라이언트 측에서 전달 / 조작 될 수 있습니다. 각도 핸들은 괜찮습니다.

그러나 100 % SPA를 원하지 않을 수도 있습니다. 그리고 뭐? 있습니다 대신 10 페이지,하지만 10 페이지 상상 매우를동적. 사용자가 로그온 한 후 오른쪽 모서리에 약간의 사용자 배지가 있습니다. 역동적이지 않습니다. 그것은 단지 사용자의 “점수”와 그들의 최신 셀카와 같은 멋진 것들을 보여줍니다. 멋진 항목을 캐시하여 쉽게 검색 할 수 있습니다. 이제 두 가지 방법으로 갈 수 있습니다. 클라이언트 측 MVC 순수 주의자라면 다른 모든 데이터와 마찬가지로 초기 HTML 페이로드가 전달 된 후 배지 데이터를 가져옵니다. 그러나 당신은 순수 주의자가 아닐 수도 있습니다. 아마도 당신은 순수 주의자의 반대일지도 모릅니다. 아마도 당신은 불순종 자일 것입니다. 따라서 초기 HTML을 제공하는 대신 서버에 다시 게시하고 JavaScript를 통해 게시하여 배지 데이터를 가져온 다음 클라이언트 측 MVC를 통해 해당 데이터를보기에 병합하는 일부 JavaScript를 제공하는 대신, 초기 HTML로. 초기 HTML이 전달 된 후 일반적인 클라이언트 측 MVC antic을 진행합니다.

서버와 클라이언트의 MVC는 2001 년에 엉망이었던 코드를 구성하는 편리한 방법 일뿐입니다. 둘 중 하나를 선택할 필요는 없습니다. 둘 다 선택할 수 있습니다. 물론, 최초 HTML을 제공 한 후에 더 많이할수록 서버 측 MVC가 덜 필요합니다. 그래도 필요한 경우 거기에 있습니다. 예를 들어 외부 Angular 템플릿이 실제로 .NET MVC ActionResult 인 ASP.NET MVC / Angular 응용 프로그램에서 작업했습니다. 즉, 서버 컨트롤러는 데이터를보기에 병합하고 템플릿으로 Angular에 전달한 다음 Angular의 컨트롤러는 데이터를보기에 병합 할 수 있습니다. 나는 이것이 좋은 생각이라고 말하지는 않지만 한 형태의 MVC가 다른 형태를 쓸모 없게 만든다는 것을 보여줍니다.

또한 Angular를 배포하는 방법에 관계없이 초기 HTML, 템플릿 및 가장 중요한 데이터를 제공하는 방법이 필요합니다. 왜 쉬운 플랫폼을 사용하지 않습니까? 많은 것이 있지만 .NET MVC는 멍청하지 않습니다. 앞서 말했듯이 초기 HTML 및 외부 Angular 템플릿을 MVC 작업의 결과로 만들 수 있지만 .NET의 웹 API 를 사용 하여 데이터를 제공 할 수 있습니다 . 웹 API는 살구 설탕에 절인 과일만큼이나 맛있습니다.

요약 : MVC는 패턴 일뿐입니다. 여러 물리 계층에서 해당 패턴을 사용할 수 있습니다. 사용할 수 없습니다. 말이되면 자유롭게 사용하십시오. 게다가 Angular는 어쨌든 MVC가 아닐 수도 있으므로 (이러한 것들을 좋아하는 사람들에게도) 이름에 “MVC”가있는 도구로 자유롭게 사용하십시오. MVC 인 경우에도 원하는대로 혼합하고 일치시킵니다.


답변

ASP.NET MVC는 서버 측 프레임 워크입니다. 어떤 JavaScript 라이브러리를 사용하든 상관 없습니다. AngularJS는 클라이언트 측 라이브러리로, 서버 측 기술이 웹 사이트를 구동하는 데 중요하지 않습니다. Python, ASP.NET MVC 또는 디스크에 직접 저장된 일반 정적 정적 HTML 파일 일 수도 있습니다.

ASP.NET MVC와 AngularJS는 모두 호환 가능하며 함께 사용하는 프로젝트가 많이 있습니다.

당신이 할 필요 모두를 사용할 수 있나요? 실제로는 아닙니다. 그것은 전적으로 프로젝트의 요구에 달려 있습니다.

  • 웹 사이트가 동적 인 경우 서버 측 스크립팅을 사용해야합니다. ASP.NET을 사용할 수 있으며 AngularJS를 사용한다고해서 서버 측 코드를 더 MVC로 만들 수는 없습니다. 서버 측 응용 프로그램을 MVC로 구성하려면 ASP.NET MVC를 선택하십시오.

  • 마찬가지로 ASP.NET MVC를 사용한다는 사실은 클라이언트 쪽 코드의 구조와 관련이 없습니다. 구조에 대한 생각없이 모든 JavaScript를 단일 파일에 넣을 수 있으며 프로젝트가 커질 때까지 만족할 수 있습니다. 여기서 다시 AngularJS는 클라이언트 측에서 애플리케이션을 구성하는 방법으로 제시됩니다.


참고 사항 : 질문에 ASP.NET MVC 3을 태그했습니다.이 프로젝트는 유지 관리해야하는 레거시 프로젝트가 아니면 지난 4 년 동안 업데이트되지 않은 레거시 서버에서 응용 프로그램을 호스팅 할 때 특정 제약 조건이없는 경우 ASP를 사용할 수 있습니다 대신 .NET MVC 4 또는 5.


답변

Visual Studio를 사용하는 경우 각도 및 MVC Web Api 컨트롤러를 포함하는 새로운 ‘단일 페이지 앱’MVC 웹 사이트 템플릿이 있습니다.

이것은 MVC 서버 측 코드가 각도 클라이언트 측 코드가 호출 할 json 엔드 포인트를 제공하기 때문에 잘 작동합니다.

또한 MVC 컨트롤러를 사용하여 단일 페이지 앱의 기본 HTML보기를 제공 할 수 있습니다. 이것은 서버 측 생성, 권한 부여, 리디렉션, 오류 처리 등의 기능을 제공합니다.

종종 단일 페이지 앱에서도 적은 양의 서버 생성 html / javascript를 원할 것입니다. 다른 환경의 엔드 포인트 URL, 다른 언어 또는 서버 측에서 수행하기가 쉬운 홀수 인증 페이지 등이 있습니다.


답변

3 년 후 ASP.NET 웹 API를 사용하여 데이터를 제공하고 Angular (js 이상)를 제공하여 클라이언트 측에서 앱을 구성합니다. 정적 사이트를 만드는 경우 ASP.NET MVC를 사용하십시오.