[React] 리액트 개요, node.js와 npm, 렌더링Rendering, JSX
2022. 6. 2. 17:36ㆍ프론트엔드/React.js
반응형
React 시작하기
개요
- 목적 : 지속적으로 데이터가 변화하는 대규모 애플리케이션 구축
- 리액트는 Virtual DOM 방식을 사용하여 DOM 업데이트를 추상화함으로써 DOM 처리 횟수를 최소화하고 효율적으로 진행합니다.
- virtual DOM 사용하여 js 객체를 구성, 실제 DOM의 가벼운 사본 느낌
- 업데이트 처리 간결성
- 프레임워크 X 라이브러리 O → 뷰 이외의 기능은 다른 라이브러리 사용 ex) react-router
Node.js, npm
- 크롬 V8 자바스크립트 엔진으로 빌드한 자바스크립트 런타임
- 리액트는 웹브라우저에서 실행되어 직접 연관은 없으나, 프로젝트 개발에 필요한 주요도구가 Node.js를 사용
- ECMAScript 6를 호환시켜 주는 바벨(babel)
- 모듈화된 코드를 한 파일로 합치고(번들링) 코드를 수정할 때마다 웹 브라우저를 리로딩하는 등의 여러 기능을 지닌 웹팩(webpack)
- npm : Node.js 패키지 매니저 도구
- yarn : npm 대체 도구. 빠르고 효율적인 캐시 시스템과 부가기능 제공
추천 익스텐션
- ESLint
- Reactjs Code Snippets
HTML end tag labels
create-react-app
- 리액트 프로젝트를 생성할 때 필요한 웹팩, 바벨의 설치 및 설정 과정을 생략하고 바로 간편하게 프로젝트 작업 환경을 구축해 주는 도구
Rendering
- to represent something in a work of art or a performance to change words into a different language or form
- 렌더링: 서버로부터 HTML 파일을 받아 브라우저에 뿌려주는 과정
- 렌더링 엔진 작동 방식 : HTML, CSS 문서를 읽어내 실제 웹사이트의 모습을 그려내준다.
- 브라우저는 서버로부터 HTML 문서를 받고
- 렌더링 엔진이 HTML 파싱 → DOM 트리, 스타일 요소 파싱 → CSSOM 트리
- DOM과 CSSOM을 결합하여 렌더링 트리 형성
- ⁎ 화면에 드러나지 않는 head 태그나 display:none은 렌더링 트리에 포함 X
- 레이아웃/리플로우 : 기기의 뷰포트 내에서 노드들의 정확한 위치와 크기를 계산하는 과정
- 페인팅/래스터화 : 렌더링 엔진이 페인트 이벤트를 발생시켜 렌더링 트리를 화면에 그리는 과정
-
- 사용자 인터페이스 - 주소 표시줄, 이전/다음 버튼, 북마크 메뉴 등. 요청한 페이지를 보여주는 창을 제외한 나머지 모든 부분이다.
- 브라우저 엔진 - 사용자 인터페이스와 렌더링 엔진 사이의 동작을 제어.
- 렌더링 엔진 - 요청한 콘텐츠를 표시. 예를 들어 HTML을 요청하면 HTML과 CSS를 파싱하여 화면에 표시함.
- 통신 - HTTP 요청과 같은 네트워크 호출에 사용됨. 이것은 플랫폼 독립적인 인터페이스이고 각 플랫폼 하부에서 실행됨.
- UI 백엔드 - 콤보 박스와 창 같은 기본적인 장치를 그림. 플랫폼에서 명시하지 않은 일반적인 인터페이스로서, OS 사용자 인터페이스 체계를 사용.
- 자바스크립트 해석기 - 자바스크립트 코드를 해석하고 실행.
- 자료 저장소 - 이 부분은 자료를 저장하는 계층이다. 쿠키를 저장하는 것과 같이 모든 종류의 자원을 하드 디스크에 저장할 필요가 있다. HTML5 명세에는 브라우저가 지원하는 '웹 데이터 베이스'가 정의되어 있다.웹 브라우저 구성 요소
- 렌더링 엔진 종류
- 크롬, 엣지 : Blink 엔진
- 익스플로러 : Trident
- 사파리 : webkit
- 파이어폭스 : gecko
- Light house / 크롬의 network 에서 렌더링 과정 확인 가능
- 참고 :
Re-rendering in React
- observing virtual DOM and change the real DOM
- from virtual DOM to real DOM
JSX
모듈 불러와서 사용하기
import React from 'react';
- node_modules 디렉터리 내부에 설치된 react 모듈을 불러와서 사용한다.
- Node.js 에서 지원하는 기능으로 브라우저에서도 사용하기 위해 bundler(웹팩 등)을 사용한다.
- 웹팩의 loader : css-loader, file-loader, babel-loader
- 바벨 : 최신 js 문법으로 작성된 코드를 ES5 문법으로 변환하는 도구 (for 구버전과의 호환)
- JSX 또한 정식 자바 스크립트 문법 X
- 바벨 : 최신 js 문법으로 작성된 코드를 ES5 문법으로 변환하는 도구 (for 구버전과의 호환)
JSX
- 함수형 컴포넌트를 쓰는 자바스크립트의 확장 문법
- 바벨(from webpack)을 사용해 변환된다.
- 장점 : 가독성, 활용성
- 주의점
- 컴포넌트 내부는 하나의 DOM 트리 구조로 이루어져야 한다.
- 예시
import React, { Fragment } from 'react'; function App() { return ( <Fragment> 내부 요소들 </Fragment> ); } export default App;
import React from 'react'; function App() { return ( <> 내부 요소들 </> ); } export default App;
- import React from 'react'; function App() { return ( <div> 내부 요소들 </div> ); } export default App;
- 예시
- JS 표현식 사용 시 { 변수 등 }
- if문 X, 조건부 연산자(삼항 연산자) O
- 컴포넌트 내부는 하나의 DOM 트리 구조로 이루어져야 한다.
반응형
'프론트엔드 > React.js' 카테고리의 다른 글
[React] 이벤트 전달, onClick={} 에서 함수에 () 붙고 안 붙고 차이 (0) | 2022.09.04 |
---|---|
[React] 리액트 라우팅, React Router Dom ( useParams, useSearchParams, useNavigate ) (0) | 2022.08.16 |
[React] useReducer 이해하기 (0) | 2022.08.08 |
[React] 리렌더링Re-rendering (0) | 2022.07.27 |
[React] Props (0) | 2022.06.16 |