좋은 질문입니다. 특히 Backbone.js와 같은 것들이 점점 인기를 얻고 있습니다.
단계별로 살펴 봅니다.
첫 번째로, HTML이 아닌 JSON을 생성하는 서버의 부하가 거의 비슷합니다. 대부분의 리소스는 데이터 객체를 HTML 또는 JSON으로 변환하지 않지만 클라이언트 요청을 수락하고, 프레임 워크를로드하고, 케이스에 CakePHP를로드하고, 요청을 라우팅하고, 더 많은 구성 요소를로드하고, 데이터베이스 연결을 설정합니다. 쿼리를 던지고 결과를 받아들이고 배열/객체로 변환 한 다음 해당 데이터를보기 용 문자열 (JSON 또는 HTML)로만 출력하기 시작합니다. 문제는 PHP와 같은 서버 측 언어가 일을 반복하고 값을 문자열로 출력하는 것에 깊은 인상을받지 않지만 어려움없이이를 수행 할 수 있다는 것입니다.
실제로 JSON 출력을 시작할 때 성능 차이가 크지는 않습니다. 최소한, 대부분의 것들을 위해 충분히 크지는 않습니다.
JSON을 사용하고 싶다면 복잡한 기능이있는 경우입니다. 예를 들어 tweetdeck의 피드와 같이 업데이트가 필요한 작은 구성 요소와 데이터 조각이 많이있는 피드; 싱글 짹짹, 짹짹, 팔로워 수 목록 등. 매번 완전한 HTML 세트를 다시 다운로드하기보다는 이러한 작은 정보를로드하는 것이 좋습니다. 당신은 잠재적으로 변경 될 수있는 많은 것들을 가지고 있기 때문에 JSON과 클라이언트 측 템플릿을 사용할 것입니다.
그러나 블로그, 전자 상거래 웹 사이트, 위키 등의 '일반적인'응용 프로그램에서는 이와 같이 세밀한 작업이 필요하지 않습니다. 이 경우 AJAX (정의를 사용)를 사용합니다.
일부 이유는 JSON을 반환하는보기를 먼저 만든 다음이를 렌더링하기 위해 클라이언트 쪽 템플릿을 만드는 것보다 HTML보기를 만드는 것이 더 쉽고 더 개발자 친화적이기 때문입니다. 서버 측 템플리트에서 특정 조건을 점검하고, 루프를 작성하고, 필요할 때 추가 데이터를 가져 오는 것이 더 쉽습니다. 어쨌든 모든 것을 그만큼 잘 수행하지는 못할 것입니다.
또 다른 이유는 서버 측에서 정적 HTML을 사용하여 비 AJAX 페이지도 대체 할 수 있다는 것입니다.따라서 AJAX가 클라이언트에서 사용 가능할 때, AJAX를 통해 내용을로드하고 바꾸는 것은 당신이 가지고있는 HTML에서 ''와 ''의 내용을 말할 수있게 해줍니다. 그러나 AJAX가 없을 때, 그 페이지. 이제는 자바 스크립트 클라이언트와 비 자바 스크립트 클라이언트를 모두 지원합니다. 서버 측 및 클라이언트 측 템플리트를 사용하여이 작업을 수행 할 수도 있지만 이중 작업이 필요하거나 콧수염과 같은 것을 사용해야합니다.
이뿐 아니라 JSON을 사용하여 클라이언트에서 모든 렌더링을 수행 할 때 단점은 페이지 렌더링에 일부 정보가 필요하지만 사용자의 손에 넘어 가지 않아야한다는 것입니다. 신용 카드 데이터, 사회 보장 번호, 실제 이름 등을 상상할 수 있습니다. 서버 측에서 렌더링하기 전에 코드에서 일종의 확인을 실행해야합니다. 클라이언트 측에서 동일한 검사를 수행하려면 클라이언트에게 모두 보내야합니다. 사용자에게 제공합니다. 물론 클라이언트 측에 보내기 전에 서버 측에서 모든 데이터를 먼저 처리 할 수는 없지만 HTML 템플릿에서 수행하는 작업이 점점 더 많아지고 있음을 의미합니다.
요약하면 :
을 나를 위해 서버 또는 클라이언트 측 HTML 렌더링의 성능은 현실에서 분명하지 않습니다. JSON을 많이 사용하지만, 일반적으로 뷰와 관련없는 것들에 사용합니다. AJAX 호출을 통해 무언가를 저장 한 다음 JSON에서 상태 보고서를 반환하는 것과 같습니다. 그래서 if data.status == 'awesome'
같은 것들을 할 수 있습니다. 그러나 만약 내가 완전히 AJAX 정상적인 웹 사이트라면, 나는 pjax (아래)와 같은 것을 사용하여 서버에서 HTML 조각을로드합니다. 내 눈에 자바 스크립트는 기존 HTML로 일을해야하며 너무 많이 결합해서는 안됩니다. 많은 작은 조각의 데이터를 동시에 추적해야하는 실제로 복잡하고 실시간 인 응용 프로그램을 만들 때 예외가 있으므로 클라이언트 측 템플릿에는 모든 곳이 아니라 그 위치가 있습니다.
pjax를 살펴 보시고, 서버 측에서 동적으로 HTML 조각을 페이지의 요소로로드하는 자바 스크립트 라이브러리입니다. http://pjax.heroku.com/
DHH는 Basecamp의 설치 방법과 방법에 대한 해커 뉴스의 답변에 답변했습니다. 대부분 서버 측 스크립트, 작은 클라이언트 MVC.
https://news.ycombinator.com/item?id=3603898
또 다른 흥미로운 링크. LinkedIn은 성능 측면에서 클라이언트 측 템플릿을 사용하는 방법을 설명합니다. http://engineering.linkedin.com/frontend/leaving-jsps-dust-moving-linkedin-dustjs-client-side-templates
좋은 질문 - 저는 믿지만 프로그래머 교환에 속합니다. –
@MichaelDurrant 나는 프로그래머 교환에 관해 모른다. OP가 끝난 후의 프로그래밍 철학이기 때문에 진정한 '답'이 무엇인지 잘 모르겠습니다. 어쩌면 포럼에 있습니까? 그런 다음 다시 한 번 '내 새 앱에 클라이언트 측 또는 서버 측 템플릿을 더 잘 사용할 수 있습니까?'라는 질문에 자신을 상상할 수 있습니다. Stackoverflow에이 질문에 그것에 대해 다룹니다. – Mosselman
@Purren 당신은 StackOverflow에 관한 두 가지 질문을했습니다.이 질문과 대답은 1 년 전의 질문입니다. 지역 사회를 위해 지역 사회를 개선하기 위해 노력하십시오. – Mosselman