Frontend/React.js

[React.js] React.js 개론

JOKUN 2024. 6. 11. 11:06

 

React.js란?

Meta(facebook)이 개발한 프론트엔드를 위한 오픈소스 JavaScript 라이브러리

대규모 웹 서비스의 UI를 더 편하고 빠르게 개발하기 위해 만들어진 기술 

 

[ React.js로 만들어진 서비스 ]

넷플릭스 페이스북 인스타그램 노션

 

기술적인 특징

  1. 컴포넌트 기반으로 UI를 표현한다.
  2. 화면 업데이트 구현이 쉽다.
    1. 선언형 프로그래밍 : 과정은 생략하고 목적만 간결히 명시하는 방법 (<-> 명령형 프로그래밍)
    2. 업데이트를 위한 복잡한 동작을 직접 정의할 필요 없이 특정 변수의 값을 바꾸는 것만으로도 화면을 업데이트 시킬 수 있음.
  3. 화면 업데이트가 빠르게 처리된다.

 

 

Rander Tree: 웹페이지의 청사진

Layout: 요소의 배치를 잡는 작업 

Painting : 실제로 화면에 그려내는 과정 

 

 

Layout과 Painting은 오래걸리는 과정임 (Reflow / Repainting)

 

DOM은 최대한 적게 수정되는게 좋음 -> 성능 이슈 

안좋은 예시: innerHTML 의 값이 변경되는 것 -> DOM 수정 발생

 

좋은 예시

 

 

 

 

이 과정을 리액트에서는 자동으로 진행해줌! 

 

Virtual DOM 이란? 

  • DOM 을 자바스크립트 객체로 흉내낸 것으로 일종의 복제판이라고 생각하면 된다.
  • React는 업데이트가 발생하면 실제 DOM을 수정하기 전에 이 가상의 복제판 DOM에 먼저 반영한다. (연습 스윙같은 느낌)
  • 동시에 발생한 업데이트들이 모였을 때 모인 업데이트를 한 번에 반영함 (DOM 1회 수정)

 

 

 

React App

React Application

어플리케이션에 가까울정도로 매우 다양한 기능을 제공하여, 단순한 웹이 아니라 웹 브라우저 위에서 동작하는 앱과 같다고 하여 리액트 앱 또는 리액트 어플리케이션이라고 부름 

 

 

리액트 사용하려면

Node.js - React 라이브러리 설치 - 기타 도구 설치 및 설정  과정을 거쳐야하는데 마지막 단계가 시간이 오래걸리고 복잡하여 기본 설정이 미리 완료된 상태된 Vite를 사용하는게 좋음. React 공식 문서에서도 권장하고 있음.

 

Vite 

차세대 프론트엔드 개발 툴 

기본 설정이 적용된 React App 생성 가능 

 

npm create cite@latest

Project name

framework 선택 - React

variant(어떤 버전 사용할지?) - JavaScript 

 

 

폴더/파일 

public : 이미지, 폰트, 동영상과 같은 코드가 아닌 정적인 파일들을 저장

src : 소스의 약자. 실제로 작성하게될 자바스크립트/리액트 코드들을 보관하는 폴더

assets : public파일처럼 이미지 같은 파일들 저장 (차이점이 있음)

.eslint.cjs : 개발자들 사이에 코드스타일을 통일시켜주는 도구 (초기 설치시 기본설정으로 되어있음)

.gitignore : 깃허브에 올릴때 올리면 안되는 파일들 명시

index.html : 리액트 앱의 기본 틀 역할을 하는 HTML 코드가 담겨있음

bit.config.js : vite 도구의 옵션을 설정하는 파일 

 

 

dev용 리액트 앱 작동시키는 법 

npm run dev

 

 

 

구동원리

vite를 통해 생성한 리액트 앱에는 웹 서버가 내장되어있음 

리액트 앱을 가동하기 위해 사용했던 npm run dev 명령어는 리액트 앱 서버를 가동시키는 명령어

가동시켰을 때 콘솔에 나타나는 http://localhost:5173/ 주소는 현재 가동 중인 리액트 웹 서버에 접속할 수 있는 주소

 

localhost : 내 컴퓨터의 주소

5173 : 고유한 포트 번호 (서버를 구분하기 위함)