티스토리 뷰

React

SSR & CSR

세이브 2021. 9. 3. 15:10

 

React와  Next를 비교하면서 CSR과  SSR 이해하기

 

 

서론1.  Express   ejs(Express 템플릿 엔진) 사용하여 웹페이지를 보여줄 경우 

=> 서버사이드 렌더링

위 사진은  experss generator로 파일을 생성하고 처음 서버를 실행시킨 모습입니다.

 화면이 바로 서버사이드 렌더링으로  보여주는 화면입니다 !! 

 

 

즉 , 서버사이드 렌더링은 서 측에서  화면 그리는데 필요한 것들을 보내줍니다.  

 그림 0

 

 

 

 

 

서론 2.   클라이언트  프론트(프론트서버)  백엔드(벡엔드서버) 구조에 익숙해지기 !! 

 

지금은  클라이언트  서버”   구조에 익숙하셔서  

아래 사진과 같은 구조가   이해  되실 수도 있는데  React (or Next)  개발한 웹은 아래 사진처럼 되어있습니다 !!

 

 

 

 

 

 

 

본론  React  (CSR)  Next ( SSR) 차이

React 

Create-React-App으로  리액트 프로젝트를 만들고 index.js 들어가 보면 아래 사진 처럼 나옵니다.  

 

src/index.js  

해석해보면  리액트 엘리먼트<App /> (app.js)  id root 요소(index.html) 그려준다는 의미입니다.   

Id root 요소는 public/index.html 있습니다 .

 

 

 

index.html

 

 

app.js

 

 다음에 앱을 실행시키고 

Localhost:3000 접속하면 아래 사진과 같은 화면이 나옵니다  

 

 다음에 여기서 View Page Source  들어가봅시다 

그러면 아래와 같은 화면이 나옵니다  

< 사진 7   >  

 

 ??..<사진7> 뭔가 이상하네요  분명 화면에는 React Rendering이라고 나오는데  

body 에는 html Element(요소)  

 

 <script src=”/static/js/bundle.js< ~   이런 것만 보입니다..  

 

그럼 누가 화면을 그려준걸까요?   

 

 

바로 저기 있는 Script들이  화면을 그려 겁니다 . 

Script 자바스크립트 코드를 넣는 태그입니다  

 

자바스크립트는 어디서 실행되죠?  

바로  웹브라우저(클라이언트)입니다. 

 

저는 이러한   때문에   기본적으로   

리액트 클라이언트 사이드 렌더링 한다 이해했습니다 . 

 

**참고 body 비어있 검색엔진이 와서   페이지인  알고 넘어가는 이슈가 생깁니다 (검색엔진 최적화 이슈) 

( 저기 있는 script 코드를 뜯어보면   제가 JSX  코드가 있네요) 

 

 

 

**참고 자바스크립트로 화면을 그려준다는   이해  되실 수도 있는데  

 

createElement()같은 메서드를 사용하면  html 요소들을  만들  있습니다.   

(div 뿐만 아니라    화면 구성에 필요한 각종 태그들을 만들  있습니다 ) 

 

 

 

 

 

 

Next 

 

이제 Next를 봅시다.

 

기본적으로 Next 실행시키면  

 

Next_app.js_document.js 제일 처음에 실행됩니다 . 

  

 

_app.js 최초로 실행되어 내부에 들어갈 컴포넌트들을 실행시키고,  

_document.js는  _app.js 구성한 HTML 어떤 형태로 들어갈지 구성해줍니다 . 

 

 Next앱을 실행시키고 Localhost:3000 접속하면 아래 사진과 같은 화면이 나옵니다  

 

 

Pages/index.js  

아까와 마찬가지로 View Page Source  들어가봅시다 

 

 

.!!  React 실행시켰을 때와 다르게  body JSX 작성한 코드들이 들어가 있습니다.  

 

검색엔진 최적화 이슈도 없겠네요~ 

 

 

_app.js, _document.js등등 덕분에   Next  개발하면 화면을 그리는데  필요한 요소들을  

프론트 (프론트 서버)에서  준비한    웹브라우저 (클라이언트) 보냅니다.  

 

(필요한 데이터는 getInitialProp 사용하여  백엔드 서버(Api) 측에서 가지고 옵니다.   

 

 

 

 

이러한 점들 때문에 저는 Next  기본적으로  서버사이드 렌더링 한다고 합니다

 

 

** 엄밀하게 따지면  리액트는 csr ,넥스트는 ssr 이렇게  

 이분법 적으로  나눌 수는 습니다. 

  

(리액트로도 서버사이드렌더링(ssr) 구현할 수도 있고  

Next로도 클라이언트사이드 렌더링(csr) 구현할  있습니다 . ) 

 

그래도 일단 react-csr, next- ssr  이렇게 틀을 잡는게  좋다고 생각합니다  

'React' 카테고리의 다른 글

Redux  (0) 2021.09.14
Component & state & props  (0) 2021.09.03
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함