브라우저 주소창에 url 검색
DNS가 실제 서버와 연결
서버에서 index.html 파일을 클라이언트로 전송
브라우저는 텍스트로 이루어진 index.html 파일 파싱
(HTML 파싱 하다 중간 중간 CSS 파싱 또는 JS 실행)
Render Tree (DOM + CSSOM) 완성해서 웹에 랜더링
Layout : 뷰포트 내에서 각 노드의 정확한 위치와 크기 계산
Paint
선언 부가 최상단으로 끌어올려지는 현상
함수와 해당 함수가 선언된 렉시컬 환경의 조합
외부 함수가 반환된 후에도 외부 함수의 변수 범위 체인에 접근할 수 있는 함수
함수를 호출할 때 범위에 따라 결정됨
이벤트가 발생했을 때 해당 요소의 최상위 부모까지 이벤트가 전달되어지는 과정
HTML 구조상 자식 요소에서 발생한 이벤트가 상위 부모 요소에 영향을 미침
e.stopPropagation
순수함수와 보조함수의 조합으로 복잡성을 해결하고 변수의 사용을 억제하여 상태 변경을 피하는 프로그래밍
조사 필요
JS의 비동기 http 통신 방식
자바스크립트 배열은 실제 자료구조의 배열과 다르게 HashMap으로 구현됨
탐색 시 일반적인 배열보다 느리지만 삽입, 삭제 시 효율이 더 좋음
var는 함수레벨 scope
let, const는 블록 레벨 scope
REST API(REpresentational State Transfer)는 웹상에서 사용되는 여러 리소스를 HTTP URI로 표현하고, 해당 리소스에 대한 행위를 HTTP Method로 정의하는 방식
리소스에 대한 행위는 HTTP Method(POST, GET, PUT, DELETE)로 표현
/(슬래시)는 계층 관계를 나타낼때 사용
URI 마지막 문자에 /(슬래시)를 사용 X
URI에 _(underscore)는 사용 X
영어 대문자보다는 소문자 사용(가독성을 위해서 긴 단어는 잘 사용 X)
URI에 파일의 확장자(예를들어 .json , .JPGE)를 포함 시키지 않음
Restful 하다는 REST API의 설계의도를 명확하게 지켜주는 것
따라서, API의 목적이 무엇인지 명확하게 하기 위해 RESTful함을 지향
dependencies와 devDependencies의 차이점은 실제 상품에서 사용할 패키지와 개발용 패키지의 차이
즉, 개발 시 필요한 라이브러리들은 devDependencies에 적어주고, (개발자가 필요한것)
진짜 기술스펙으로 사용되어야할 라이브러리들은 dependencies에 설치해준다.
즉, 어떤 Library가 프로젝트의 컴파일(빌드) 타임에 필요하면, devDependencies에 넣고, 런타임에도 계속 쓰이는 것이면 dependencies에 넣는다.
출처: https://zereight.tistory.com/282 [Zereight's Blog]
Virtual DOM은 실제 DOM 변화를 최소화 시켜주는 역할
먼저 브라우저는 HTML 파일을 스크린에 보여주기 위해 DOM 노드 트리 생성, 렌더트리 생성, 레이아웃, 페인팅 과정을 거침
DOM 노드는 HTML의 각 엘리먼트와 연관되어 있기 때문에 HTML 파일에 20개의 변화가 생기면 DOM 노드가 변경되고 그 이후의 과정역시 20회 다시 이루어짐
작은 변화에도 매우 복잡한 과정들이 다시 실행되기 때문에 DOM 변화가 잦을 경우 성능이 저하
Virtual DOM은 뷰에 변화가 있다면, 그 변화가 실제 DOM에 적용되기 전에 Virtual DOM에 적용시키고 최종 결과만 실제 DOM에 전달
따라서 20개의 변화가 있다면 Virtual DOM은 변화된 부분만 가려내어 실제 DOM에 전달하고 실제 DOM은 그 변화를 1회로 인식하여 단 한번의 렌더링 과정만 거침
미들웨어
액션 객체가 리듀서에서 처리되기 전에 원하는 작업 수행 가능
유용한 함수와, Hooks
connect, useSelector, useDispatch, useStore
하나의 커다란 상태
Context API 사용 시 기능별로 COntext를 만들어서 사용
but, Redux는 모든 글로벌 상태를 하나의 커다란 상태 객체에 넣어서 사용
함수형 컴포넌트는 클래스형 컴포넌트보다 선언하기가 좀 더 편하고, 메모리 자원을 덜 사용한다는 장점