CSR & SSR
- Client Side Rendering
HTML 다운로드 ⇒ JS 다운로드 ⇒ JS 내부 React 소스코드 실행 ⇒ React 앱 실행 ⇒ 화면 출력 ⇒ User interaction 가능- Server Side Rendering
HTML 다운로드 ⇒ 미리 렌더된 화면 출력*, JS 다운로드 ⇒ JS 내부 React 소스코드 실행 ⇒ React 앱 실행 ⇒ User interaction 가능동작을 할 수 있는 단계는 모두 React 앱이 실행된 후로 동일하지만, SSR은 React 앱을 실행하기 전에 먼저 화면을 볼 수 있음
import ReactDOM from 'react-dom'
ReactDOM.render(...)
: 시작 함수 격import React from 'react'
프론트엔드 변천사
고전 프론트엔드
HTML로 문서 구조를 잡고
CSS로 스타일을 입히고
JS로 DOM을 조작함컴포넌트를 활용한 프론트엔드
컴포넌트를 정의하고,
실제 DOM에 컴포넌트를 그려준다.const component = { message: "init", count: 0, render() { return `<p>${this.message} : ${this.count}</p>` }, }; function render(rootElement, component) { rootElement.innerHTML = component.render() } // 초기화 render(document.querySelector('#root'), component) document.querySelector('#btn_plus').addEventListener('click', () => { component.message = 'update' component.count += 1 render(document.querySelector('#root'), component) })
리액트를 활용한 프론트엔드
const component = props => { return React.createElement('p', null, `${props.message} : ${props.count}`) } ReactDOM.render( React.createElement(Component, {message: 'init', count: 0}, null), document.querySelector('#root') ) document.querySelector('#btn_plus).addEventListener('click', () => { ReactDOM.render( React.createElement( Component, { message: 'update', count: 10 }, null ), document.querySelector('#root') ) })