풀스택 웹개발 부트캠프 12주차 (1)

syxxne·2023년 9월 25일
0

부트캠프

목록 보기
27/42

React

  • 동적 사용자 인터페이스를 만들기 위해 2011년 페이스북에서 만든 오픈소스 JavaScript 라이브러리
  • 사용자와 상호 작용이 가능
  • 데이터 변경이 잦은, 복잡하고, 규모가 큰 라이브러리에 적합
  • 페이스북, 인스타그램, 넷플릭스, 드롭박스 등에서 사용
  • 특징
    • Data Flow
    • Component 기반 구조
    • Virtual Dom
    • Props and State
    • JSX

프레임워크 vs 라이브러리

프레임워크

  • 원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖춘 뼈대
  • 한 프로그램을 만들기 위한 함수명 등이 모두 정의되어 있음
  • 사용자는 프레임워크가 정해준 방식대로 클래스, 메서드들을 구현
  • 프로젝트 하나당 하나의 프레임워크만 사용 가능
  • 제어 흐름 권한을 프레임워크가 가짐 (제어의 역전)
  • ex) Spring, Django, Angular.js, Vue.js, Express.js 등

라이브러리

  • 특정 기능을 모아둔 코드, 함수들의 집합
  • 코드 작성 시, 활용 가능한 도구들
  • 원하는 페이지에서 모두 사용 가능
  • 제어 흐름 권한을 사용자가 가짐
  • ex) Python pip, Node.js npm으로 설치한 패키지, JQuery, React.js 등
    출처1, 출처2

Data Flow

  • 리액트는 단방향 data flow
  • 단방향 = 한 쪽으로 흘러가는 것
  • Angular.js처럼 양방향 데이터 바인딩은 규모가 커질수록 데이터의 흐름을 추적하기 힘들고 복잡해짐

Component 기반 구조

  • Componenet : 독립적인 단위의 소프트웨어 모듈로 소프트웨어를 독립적인 하나의 부품으로 만드는 방법
  • React는 UI (View) 를 여러 컴포넌트로 쪼개서 만듦
  • 한 페이지 내에서 여러 부분을 컴포넌트로 만들고, 이를 조립해 화면 구성
  • 컴포넌트 단위로 쪼개져 있어 전체 코드 파악이 쉬움
  • 기능 단위, UI 단위로 캡술화시켜 코드 관리 → 재사용성
  • 코드를 반복할 필요 없이 컴포넌트만 import하여 사용하면 된다는 간편함
  • 어플리케이션이 복잡해지더라도 코드의 유지보수 및 관리 용이
  • html 파일 하나에서 id는 중복으로 사용 ❌ (재사용 가능하다는 컴포넌트 특성과 충돌) → 컴포넌트에는 id 사용 ❌
  • cf) Atomic design

Virtual Dom

  • DOM : Document Object Model
  • 리액트는 DOM Tree 구조와 같은 구조를 Virtual DOM으로 가지고 있음
  • 이벤트가 발생할 때마다 Virtual DOM을 만들고 다시 그릴 때, 실제 전후 상태를 계속 비교 → 앱의 효율성 & 속도 개선
  • 바뀐 부분만 렌더링

Props and State

  • Props
    • 부모 컴포넌트에서 자식 컴포넌트로 전달해주는 데이터
    • 자식에서는 props 변경 ❌
    • props를 전달한 최상위에서만 변경 ⭕
    • 단방향이므로 부모 → 자식으로 데이터 보내면 끝 (자식 → 부모로 다시 이동 ❌)
  • State
    • 컴포넌트 내부에서 선언되고 내부에서 값을 변경
    • 클래스형 컴포넌트에서만 사용 ⭕
    • 각각의 state는 독립적
    • 실제로 값을 변경하는 것이 아니라 변경하는 것처럼 사용

JSX

  • JSX = JavaScript + XML
  • 리액트에서 JSX 사용이 필수는 아니지만 많이 사용됨

React 프로젝트

npx create-react-app {앱 이름}
  • 앱 이름에는 대문자 사용 ❌ (대문자 대신 - 사용)
  • 리액트 프로젝트에서 root는 무조건 1개
  • npx
    • npm의 자식 명령어
    • npm보다 가볍게 패키지를 구성함

JSX 사용

  • 최상위에는 반드시 부모 요소 필요
    • 필요 없는 div를 사용하게 되는 경우 多 → 빈 태그 (fragment) 사용 ⭕
  • 종료 태그 필수
  • style, HTML의 attribute 이용할 때 camelCase 이용
  • { }로 감싸서 JavaScript 문법 사용 ⭕
  • 연산자 사용 방법
    • 계산을 마친 후, 변수에 담아서 JSX 문법에서 보여줌
    • { } 안에서 삼항 연산자 이용 (if나 for 사용 ❌)
  • 요소에 스타일 적용할 때에는 문자열 ❌ 객체 ⭕
  • 주석은 {/* */} 형태로 사용

0개의 댓글