<aside> 💡
개념/내용을 단순히 그대로 옮겨적는것이 아닌, 강의 내용을 복기하고 추가 인사이트를 얻으며 확실히 ‘내 것’이 되기 위한 개인의 이해를 바탕으로 작성되었습니다 🧚🏼
</aside>
사전적 의미를 살펴보면,
Render: (어떤 상태가 되게) 만들다[하다] (=make)
그렇다.
일단은 어떤 상태가 되게 만들게 하는거다.
그럼 웹에서 말하는 렌더링은?
→ 웹이 어떤 상태가 되게 만드는것
→ 그럼 그 상태는 어떻게 웹에서 그려낼 수 있는가
→ 우리가 만든 코드로 웹이 이해할 수 있는 html 코드로 변환하는과정을 말한다(+ing)
Ex) 아래와 같은 컴포넌트를 작성해서 렌더링을 한다면,
const renderText = () => {
return (
<h1>안녕하세요!</h1>
)
}
export default renderText;
🔻 아래와 같은 결과로 렌더링이 되어 화면에 표시된다
<h1>안녕하세요</h1>
근데 이렇게 렌더링을 하는 방식이 한가지만 있는것이 아니다!
크게 2가지로 나눌 수 있다.
아래에서 좀 더 살펴보자 🙌🏻
CSR(Client-Side Rendering)
: 말 그대로다.
클라이언트쪽에서 렌더링을 하는거다.
서버는 클라이언트가 렌더링할 수 있게 기본 뼈대인 html과 javscript/css 파일만 ‘제공’
클라이언트는 실제 콘텐츠가 만들어지도록 직접 ‘실행’
🔻 html 파일은 보통 아래와 같은 구조
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>My App</title>
<script src="/static/js/main.js" defer></script>
</head>
<body>
<div id="root"></div>
</body>
</html>
→ 자세히보면 화면을 보여주는 정보는 없고,
자바스크립트 번들(main.js
)만 로드되어 있는걸 볼 수 있다.
브라우저가 이 main.js
를 받아서 실행하면,
여기 안에는 리액트나 다른 프레임 워크가 document.getElementById("root")
에 HTML 요소들을
직접 렌더링하는 코드가 있다.
즉, 실제 콘텐츠는 JS 실행 후에 만들어지는것!
→ 그래서 이걸 Client Side Rendering이라고 부른다
쉽게 말하면,
클라이언트: “내쪽에서 화면 그릴거니까 넌 그냥 내가 그릴 수 있게 스케치북(뼈대) 제공해주고, 그림을 내가 그릴건데 그릴려면 색연필이나 뭐 도구(js/css 리소스)는 있어야할 거 아니야. 그런것들만 제공해줘 🙂 뭘 그릴지는 내가 정해”
서버 : 여기 스케치북이랑 그릴 수 있게 도구 줄게
SSR(Server-Side Rendering)
: 이번엔 서버다. 서버에서 렌더링처리하는것!
클라이언트가 어떤 페이지(/home, /about 등)를 요청하면
서버는 이미 화면이 완성된 HTML을 만들어서 내려준다.
즉, 서버가 직접 화면을 그려서 클라이언트에 넘겨주는 것이다.
서버: “내가 스케치북도 있고 색연필도 사용해서 이미 다 완성본 그려놨음.
클라이언트 너는 그냥 보여주기만 하면 됨”
클라이언트: “오 그럼 전 그냥 사용자한테 보여주기만 할게요”