클로저를 알고 계시는지? (스코프에 주의)
호이스팅이란?
var
로 선언한 변수의 경우 호이스팅 시 undefined
로 변수를 초기화let
과 const
로 선언한 변수의 경우 호이스팅 시 변수를 초기화하지 않습니다.CSR 과 SSR 에 대해 설명해주실 수 있나요?
CSR의 과정 :
- 서버가 브라우저에게 응답을 보냄 -> 브라우저는 JS를 다운 받음 -> 브라우저는 리액트를 실행 -> 페이지가 보여지고 상호작용 함
SSR의 과정 :
- 서버가 브라우저에게 HTML 응답 랜더링하기 위한 준비가 되었다고 보냄 -> 브라우저가 페이지랜더링, 페이지가 보여지고 브라우저는 JS 다운받음 -> 브라우저 리액트 실행 -> 페이지 상호작용 가능
CSR은 마지막 단계 전까지 화면에 보여지지가 않고 로딩중 / SSR은 미리 페이지가 보여진다.
즉, CSR은 초기로딩속도가 느리긴하지만, 화면전환에 있어서 클라이언트에서 이루어져서 빠른 전환이 가능
SSR은 초기로딩속도가 빨라서 사용자가 느끼기엔 좋지만, 동작은 하지않음. 그리고 화면전환에 있어서 서버에 요청해야하므로 서버에 부담을 줄 수 있음.
어떤게 더 좋다보다 서비스마다 사용자의 요구마다 다름.
쿠키와 세션
Cookie | Session | |
---|---|---|
저장위치 | Client | Server |
저장형식 | Text | Object |
만료시점 | 쿠키 저장시 설정<br />(설정 없으면 브라우저 종료 시) | 정확한 시점 모름 |
리소스 | 클라이언트의 리소스 | 서버의 리소스 |
용량제한 | 한 도메인 당 20개, 한 쿠키당 4KB | 제한없음 |
container : 어플의 비즈니스 로직을 담당한다. 해당 어플에서만 사용하는 데이터와 로직을 처리하며 이것들을 props로 presenter 에 넘긴다. Text와 Input 컴포넌트는 presenter가 가져야 하는 컴포넌트이기 때문에 container 컴포넌트에 의존하지 않도록 주의한다.
presenter : 화면을 구성하는 UI를 담당한다. 비즈니스 로직을 갖지 않는 것이 중요하다.
이상적으로 presenter 컴포넌트는 인자로 props만 가지며, 비즈니스 로직이 없기 때문에 앱과도 독립적이다. 때문에 다른 어플에서도 presenter 어플을 바로 사용할 수 있고 코드를 작성할 때도 이것에 유의하면서 작성해야 한다.
screens : 어플의 화면 단위 컴포넌트. 위에서 봤던 container 컴포넌트를 갖고 있다. 혹은 화면마다 겹치는 container 컴포넌트가 있다면 containers라는 폴더를 생성해서 관리할 수도 있다.
navigation : 화면 전환과 관련된 컴포넌트. 가장 뼈대가 되는 RootStackNavigator.js 같은 navigator 파일이 들어간다.
api : 통신과 관련된 데이터.
assets : 이미지나 폰트 등.
hooks : custom hook 파일.
reducers : reducer 함수.
theme : 테마 컬러나 mixin등 앱 전체적으로 사용할 수 있는 데이터.
utils : 앱 전체적으로 사용 가능한 간단한 함수들.