Angular.js 및 ASP.NET MVC 4
ASP.NET MVC 4 프로젝트가 있는데 Angular.js 또는 Knock.js를 사용할 JavaScript 프레임 워크 또는 라이브러리에 대한 아키텍처 결정에 갇혀 있습니다. 저는 현재 Knockout.js보다 Angular.js를 사용하는쪽으로 기울고 있지만 프로젝트 개발 도중에 실수를 저질렀다는 것을 알고 싶지 않습니다.
다음은 몇 가지 배경입니다.
- 양방향 모델 데이터 바인딩이 필요합니다.
- 뷰를 테스트 할 수있는 능력이 필요합니다. 종단 간 단위 테스트를 수행하고 싶습니다. 또한 지속적 통합을 사용하고 있습니다.
- "변경 사항 저장"기능. 즉, 사용자가 페이지를 변경하는 경우 변경 사항을 감지하고 사용자가 페이지를 벗어나기 전에 변경 사항을 저장하라는 메시지를 표시하는 기능이 필요합니다.
- "알림"기능. 즉, 사용자는 약 8 시간 동안 로그온되며 다른 사용자가 변경 한 사항 (오류, 데이터 상태 변경 등)에 대해 알림을 받고 업데이트해야합니다.
- 우리는 우리의 응용 프로그램을 "미래 증명"해야합니다. 현재 사업부는 모바일 장치 지원 여부를 결정하지 않았지만 시간 문제라는 것을 알고 있습니다.
- 우리 팀은 초급부터 시니어 개발자까지 다양한 경험 수준을 가진 개발자로 구성됩니다.
- 현재 우리의 모델은 복잡하고 훨씬 더
- 또한 RAD, 코드 재사용 및 유지 관리 가능성도 고려해야합니다.
나는 훌륭한 대답을 읽고 여기에 와 각도에 대해 스콧 알렌의 인터뷰를 보았다 여기
현재 ASP.NET MVC 4 아키텍처에서 Web API와 같은 서버 측에서 무언가를 사용하도록 변경할 수 없기 때문에 MVC 4로 Angular.js를 구현하는 데 몇 가지 우려 가 있습니다. 이로 인해 두 모델이 하나씩 서버와 클라이언트에 하나?
Angular와 Knockout에 대한 "더 나은"토론을 찾고 있지 않습니다. 둘 다 장단점이 있다고 생각하기 때문입니다. ASP.NET MVC 4 응용 프로그램에서 JavaScript 프레임 워크 또는 라이브러리를 구현하는 실제 코드를 찾고 있습니다. 지금부터 2 년 이상 살 수있는 솔루션이 필요합니다 :)
어떤 아이디어 나 제안? 대답은 Knock이나 Angular가 아니라 다른 JavaScript 프레임 워크일까요?
내 2 센트 가치.
서문-저는 앵귤러와 녹아웃을 모두 사용했습니다. 저는 MVVM / MVC lib로 구축 된 세 번째 중요하지 않은 프런트 엔드에 있습니다.
MVVM이 wpf / silverlight 메커니즘과 매우 유사하기 때문에 녹아웃으로 시작했습니다. 그리고 그것은 잘 작동합니다. 튜토리얼과 문서는 최고 수준입니다. 모든 코더는 며칠 내에 knockout.js로 작업 할 수 있으며 .net에서 mvvm을 사용한 경우 몇 시간 내에 작업 할 수 있습니다.
그러나 요즘 나는 앵귤러를 사용하고 있으며 아마도 다음과 같은 이유로 그것을 고수 할 것입니다.
angular는 완전한 프레임 워크입니다. 녹아웃은 실제로 2 방향 바인딩에 관한 것입니다. 나머지 작업을 수행하려면 여전히 backbone.js / jquery와 같은 다른 라이브러리가 필요합니다.
각도에는 의존성 주입이 있습니다. 이는
코드에 구조를 부여 할뿐만 아니라 테스트를 위해 모의 를 추가 하는 데 적합합니다.angular는 일반 JS 변수를 $ scope 객체 내에서 관찰 가능한 것으로 취급합니다. 즉, 특별한 방법으로 선언 할 필요가 없습니다.
나는 각진 팬보이가 아니다. 나는 그들이 현재 가지고있는 "펑키 한"MVVM / MVC 하이브리드 아키텍처 대신 MVVM 아키텍처로 더 많이 이동할 수 있다고 생각한다.
각도의 가장 큰 문제는 문서입니다. 녹아웃에 비해 비참합니다. 코더의 속도를 높이는 데 추가 시간과 비용이 추가됩니다. 그러나 일단 거기에 있으면 현재 최선의 선택 IMHO입니다.
이 질문이 커뮤니티의 관심을 끌게되어 기쁩니다;) 완성을 위해 여기에 제가 한 일이 있습니다.
나는 AngularJS와 ASP.NET MVC 4를 사용했고, 그렇게해서 기뻤습니다. Angular는 가파른 학습 곡선을 가지고 있지만 지시문의 힘으로 인해 그만한 가치가 있습니다.
- 양방향 모델 데이터 바인딩이 필요합니다. 경우에 따라 MVC 컨트롤러에서 오는 일부 초기 값을 설정해야했습니다. 이를 위해 ng-init 속성을 사용했습니다.
- 뷰를 테스트 할 수있는 능력이 필요합니다-테스트를 위해 AngularJS 문서 를 따랐습니다.
- "변경 사항 저장"기능-Angular의 지시문을 사용하여 구현했습니다.
- "알림"기능-toastr.js 및 지시문 (schweet)을 사용하여 구현했습니다.
- 우리는 응용 프로그램을 "미래 증명"해야합니다. AngularJS에 대한 Google의 계획을 모르지만 AngularJS와 함께 작업 한 후에는 곧 어디로도 갈 수 없으며 더 널리 채택 될 것으로 예상했습니다. :)
AngularJs에 대한 많은 의견은 없지만 Knockout에 대한 몇 가지 생각을 제공하고 싶습니다.
Knockout은 주로 뷰를 뷰 모델에 연결하는 데이터 바인딩 라이브러리이지만 실제로 그 이상의 많은 기능을 제공하지는 않습니다. 복잡한 클라이언트 기반 웹 사이트를 구축하기위한 메인 라이브러리로 녹아웃 만 사용하는 것은 권장하지 않습니다.
스파와 유사한 기능 (예 : 해시 태그 탐색)을 구현하는지 또는 주로 MVC 서버 측 뷰 (예 : Razor)를 사용하는지 여부는 언급하지 않았습니다. 페이지 당 빠른 데이터 바인딩을 찾고 있다면 다시 고려할 것입니다. 나에게이 두 가지 (각도 또는 녹아웃)는 MVC와 같은 서버 측 접근 방식이 아니라 클라이언트 측 개발 경험을 향상시키기 위해 설계되었습니다.
SPA 접근 방식을 고려하고 있다면 부분적 으로라도 뷰 활성화 수명주기에 대한 일정 수준의 제어를 제공하는 프레임 워크가 필요할 것입니다.
데이터 바인딩 능력과 신뢰성에 관해서는 Knockout을 믿습니다. 나는 그것을 광범위하게 사용하고 있으며 꽤 좋아했습니다. 녹아웃 느낌이 마음에 들면 Durandal 을 살펴 보는 것이 좋습니다 . Durandal은 많은 "스파"웹 프로젝트의 요구를 충족 할 수있는 괜찮은 프레임 워크입니다. Knockout을 포함한 여러 검증 된 라이브러리 위에 구축 된 클라이언트 측 프레임 워크입니다. Angular보다 약간 더 가볍고 사용하기 쉽습니다.
우리는 Durandal with Knockout을 추가 파사드와 함께 사용하여 개발 관점에서 문제를 강화하는 상당히 큰 ASP.Net MVC 웹 사이트를 구축하고 있으며 ASP.Net MVC와의 통합은 간단합니다. 나는 거기에있는 서버 측 녹아웃을 사용하는 것을 권장하지 않는다; 나는 MVVM 패턴의 실제 힘을 제한하기 위해 그것을 발견했습니다.
참고 URL : https://stackoverflow.com/questions/18199174/angular-js-and-asp-net-mvc-4
'IT TIP' 카테고리의 다른 글
offsetTop 대 jQuery.offset (). top (0) | 2020.10.24 |
---|---|
S3에서 파일 이름의 최대 길이는 얼마입니까? (0) | 2020.10.24 |
-> <-연산자는 무엇을합니까? (0) | 2020.10.24 |
'gc'와 'gccgo'의 주요 차이점은 무엇입니까? (0) | 2020.10.24 |
.NET Core (비 ASP.NET Core) 프로젝트 용 VS2017 솔루션 탐색기에서 파일을 중첩 할 수 있습니까? (0) | 2020.10.24 |