2012-05-07 3 views
0

은 MVC 학습에 익숙하지 않습니다.backbone.js와 같은 라이브러리에서 프론트 엔드 및 백엔드 로직을 나누기위한 경험적 도구

특히 backbone.js와 같은 프런트 엔드 라이브러리를 사용할 때 백엔드와 비교하여 프론트 엔드에서 로직이 분할되고 결정되는 추론 (프로그래밍 방식이 아닌)이 있는지 궁금합니다.

즉, backbone.js와 같은 라이브러리는 DOM 요소와 데이터를 분리하기 때문에 서버 측에서 수행하는 데 사용되는 정교한 클라이언트 측 논리를 만드는 데 유용합니다. 사전 조이

+0

Welcome to Stackoverflow! 다른 사람의 질문을 포함하여 유용한 모든 대답을 upvote하는 것을 잊지 마십시오. 자신의 질문에 대한 최선의 답을 확인/수락하는 것을 잊지 마십시오. –

+0

나는 불행히도 내가 n00b이기 때문에 아무것도 upvote 수없는 것 같아 – JoeyC

답변

2

Model - View - Controller를 수행하는 "고전적인"방법은 서버에 세 가지 모두를 갖는 것입니다. HTML과 일부 JS의 View 레이어 출력은 브라우저에 의해 렌더링됩니다.

레일즈는 이것의 훌륭한 예입니다.

"새로운 멋진"방법은 브라우저를 API를 통해 services을 제공하는 백엔드 서버가있는 주 컴퓨팅 엔진으로 취급하는 것입니다.

이 경우 모델, 뷰 및 컨트롤러 소프트웨어는 모두 클라이언트에서 (자바 스크립트 또는 coffeescript로) 실행됩니다. 백본은 종종 브라우저 측 솔루션의 일부이지만 척추, angularJS 및 다른 옵션과 같은 대안이 있습니다.

백엔드 서버에서 dbms 및 좋은 API 시스템을 실행합니다. Ruby/Rack에는 훌륭한 프레임 워크가 구축되어 있습니다. Daniel Doubrovkine의 게시물보기 code.dblock.org 여기에는 다양한 선택 항목이 있습니다.클라이언트에서 MVC의

장점

  • 쿨 Ajaxy 한 페이지 효과는
  • 단일 페이지 웹 어플리케이션은 일반 웹 사이트
  • 을보다 사용자에게 더 빠른 UI를 제공 할 수있는 사용자에 대한 응답 사용자 인터페이스
  • 좋은 아키텍처, 목적을 이루기위한 인 에이 블러 iPhone/Android 앱
  • 앱에 따라 standa를 만드는 데 사용할 수 있습니다. 네트워크 연결없이 작동하는 외로운 웹 응용 프로그램
  • 이 많은 멋진 애들이 검색 엔진 가능한 콘텐츠를 만드는 등
  • ,

단점

  • 오래된 브라우저, IE에 대한 접근 방법을 결정하기 위해 필요 요즘
  • 하고있는 것입니다 수 까다로워. 검색 엔진에만 그림자 웹 사이트가 필요할 수 있습니다.
  • 테스트가 어려울 수 있습니다. 그러나 테스트 가능성 포커스가 포함 된 AngularJS와 같은 새로운 라이브러리를 확인하십시오.
  • 이 접근 방식은 더 많은 소프트웨어가 포함됩니다. 쓰기 및 테스트에 더 많은 시간이 소요됩니다.

    그것은 당신에게 달려 선택

. 결정은 시간대, 자원, 경험, 필요 등에 따라 달라집니다. 백본 등을 사용할 필요가 없습니다. 이렇게하는 것은 절충점입니다 (위 참조). 사용하지 않는 것이 더 빠르거나 더 쉬울 것이지만 그것없이 (또는 비슷한) 수행하면 목표를 달성하지 못할 수도 있습니다.

레일스 또는 PHP에서 추가 기능 라이브러리 또는 기타 MVC 솔루션을 사용하여 훌륭한 MVC 응용 프로그램을 만들 수 있습니다. 나 보안 & 검색했다 위해

+0

좋은 대답입니다.하지만 OP의 질문에 정말로 충실합니까? 질문은 "논리 : 클라이언트 또는 서버"가 아니 었습니다. 그러나 "논리 : 그것을 어떻게 나누는가?". 클라이언트 측 MVC의 장점과 단점에 대한 잘 정리 된 설명은 +1입니다. – nrabinowitz

+0

나는 동의한다. 아주 좋은 고장. – JoeyC

1

에서

덕분에 나는 당신이 올바른 아닌 프로그래밍 의미에서 단어 휴리스틱을 사용하고있는 것 같아? 나는. 당신은 그것을 '엄지 손가락'의 라인을 따라 무언가를 의미하기 위해 사용하고 있습니까?

  • 서버가 UX 및 SEO 이유로 초기 페이지로드를 렌더링 할 : 엄지 손가락의 규칙으로

    .

  • 동일한 이유로 서버에서 렌더링 한 후속 AJAX 부분 페이지로드가있을 수도 있습니다. 프로파일이 더 빨라 보이는 프로파일 : 서버가 렌더링을 통해 여분의 데이터 (마크 업)를 전송하고 JSON을 사용하여보다 간결한 페이로드를 전송하고 클라이언트에서 렌더링하도록합니다. 특히 클라이언트의 렌더링 속도가 느려지는 모바일 장치를 고려하면 더 적은 인터넷 연결을 사용하는 모바일 장치가있는 경우 특히 트레이드 오프가 있습니다 ...
  • 클라이언트 - 서버 아키텍처와 마찬가지로 : 클라이언트가 클라이언트에서 빠른 응답을 요구하는 작업을 수행 한 다음 동일한 작업을 수행하는 서버에 일부 비동기 작업을 보냅니다.

걸릴 거리는 모호하지만 실제로는 모든 것이 상충 관계에 있으며 제품 요구 사항을 결정해야합니다.

+0

고마워. 그래서 근본적으로 어렵고 빠르지는 않습니다. 단지 – JoeyC

0

처음 두 가지

  • 당신은 서버에서 읽기/쓰기 액세스를 제한하기 위해 항상 원하는 것 .. 마음에 와서.
  • 대부분의 경우 가능한 한 데이터에 가까운 검색 기능을 원할 것입니다.