그 이유는 안정성 입니다.
서버 측에서 안정적인 구성 요소를 선택할 수 있습니다. 일반적으로 이것은 Java와 FreeMarker와 같이 매우 신중하게 선택된 라이브러리를 선택한다는 것을 의미합니다. 말할 것도없이 Java의 표준 라이브러리를 제외한 모든 라이브러리는 일회용으로 취급되므로 자체 제작 래퍼를 통해 외부 라이브러리에 액세스합니다. 이것은 요구 사항이 발생하면 한 라이브러리에서 다른 라이브러리로 쉽게 변경할 수 있음을 의미합니다.
Java를 새 버전으로 업데이트 할 때마다 주요 버전 업데이트에서도 Java가 매우 안정적인 구성 요소이기 때문에 일반적으로 잘 작동합니다. 또한 내가 가지고있는 모든 서버는 동일한 Java 버전을 실행하고 있습니다. 모든 클라이언트가 동일한 JavaScript 구현을 실행하는 것은 아닙니다.
클라이언트 쪽에서는 안정적인 구성 요소를 선택할 수 없습니다. 브라우저 제작자들은 제가 특히 마음에 들지 않는 언어 인 JavaScript를 선택하도록 강요 할 것입니다. (그리고 JavaScript로 컴파일 된 언어에 대해서는 말하지 마십시오. 끔찍합니다!) 모든 브라우저의 JavaScript 구현은 다릅니다. 이것은 지원되는 모든 브라우저 버전으로 제품을 테스트하는 것이 완전히 지옥이라는 것을 의미합니다.
내 솔루션? 나는 서버 측에서 가능한 한 많은 처리를 수행하며 클라이언트 측은 서버로 데이터를 보내고 JSON 및 HTML 조각 형태로 서버에서 데이터를 수신하는 경량 래퍼 일뿐입니다. XML을 피하십시오. 대신 JSON을 사용하십시오.
나는 클라이언트 측 템플릿을하지 않습니다. 서버의 내용을 HTML 조각으로 렌더링 한 다음 .innerHTML
속성을 사용 하여 클라이언트 쪽의 다양한 자리 표시 자 요소에 할당합니다 . 두 개의 템플릿 엔진 (자바 엔진과 자바 스크립트 엔진)이 필요하지 않기 때문에 기술 스택을 가능한 한 단순하게 유지합니다.
단점은 분명히 빛의 속도 지연입니다. 대륙간에 0.5 초의 대기 시간이 드문 일은 아닙니다.
요즘 고객은 스마트 폰일 수 있습니다. 스마트 폰은 배터리 수명이 제한되어 있으므로 계산량이 많은 경우 서버로 오프로드하는 것이 좋습니다. 그러나 클라이언트 측에서 수행하면 간단한 작업이 에너지 효율적일 수 있습니다. 무선 액세스를 피할 수 있기 때문입니다. 그러나 안정성이라는 주요 논거는 실제로 간단한 계산조차도 서버로 오프로드하는 것이 합리적 일 수 있습니다.
부록으로 이미 일부 답변에서 관찰 된 것처럼 보안 도 확보 할 수 있습니다. 응용 프로그램 논리가 전적으로 클라이언트 측에있는 경우 누군가는 온라인 웹 상점에서 구매할 대상으로 가격을 설정할 수 있습니다.