원래 자바스크립트는 웹상에서만 사용가능한 언어였다.
WEB 1.0은 단방향 통신
WEB2.0은 사용자와 상호작용이 가능 (구글 맵스, 채팅 기능 등)
그래서 고성능의 자바스크립트가 필요했고, V8엔진이 등장했다.
이걸 브라우저 외부에서 사용하고자 하는 움직임이 있었고, 그렇게 Node.js가 탄생했다.
즉, Node.js는 자바스크립트를 어느 환경에서나 실행할 수 있게 해주는 실행기이다.
Client-Side Rendering
프론트엔드에서 사용자가 페이지에서 보는 동적인 부분을 대부분 처리하는 방식
- 사이트가 변하는 부분들을 프론트엔드에서 처리
- 서버와의 통신은 API 통신을 이용
- 빠른 반응이지만 페이지의 내용은 API 호출이 완료된 후에 보여짐
복잡한 프로젝트 구성, 큰 개발 사이즈
Server-Side Rendering
백엔드에서 페이지 대부분의 영역을 처리해서 프론트엔드로 전달하는 방식
- 사이트가 변하는 부분들을 백엔드에서 처리
- 백엔드에서 HTML 파일을 작성해 프론트엔드로 전달
- CSR에 비해 쉬운 구성, 작은 개발사이즈
- 로딩이 완료될 시 페이지와 데이터가 한번에 표시
- 상대적으로 사용자가 보기에 느려보임
- 페이지 이동 될 때마다 리로딩 하기 때문에 페이지 깜빡임
웹 서비스를 구성하기 위해서는 매우 많은 기능들이 필요하다.
이러한 기능들을 하나씩 직접 만드는 것에는 너무 큰 비용이 발생된다.
웹 서비스는 많은 부분이 정형화 되어 있고 프레임워크를 사용해 정형화된 부분을 간단하게 구현해 필요한 부분만 구현가능하다.