가장 핫한 FE 라이브러리🔥, React 가지고 놀아보기
    • 01
      React 개념 및 개발 환경 설정
    • React는 왜 만들어졌는가?
      React의 특징 및 장점
      React 개발 환경 설정
    • 02
      React 개발 준비 및 기초 문법
    • React Project Setting
      React Project 구조
      전화번호부 따라 쳐보기
      React 기초 문법
    • 03
      React Components
    • Class Component
      Functional Component
    • 04
      Split Component & Styling
    • Split Component
      Split Component - InputBox
      Split Component - PhoneList
      Split Component - PhoneItem
      Component Styling - CSS
      Component Styling - Sass
      Component Styling - styled-components
    • 05
      State & Props
    • State 정의 방법
      State 활용 방법
      Props를 받을 컴포넌트 만들기
      Props 활용 방법
    • 06
      State & Props 전화번호부에 적용하기
    • 전화번호부 데이터 화면에 출력하기
      Input 값 State로 관리하기
      dummyData.js 파일 변경하기
      전화번호부 데이터 추가 함수 만들기
      전화번호부 데이터 삭제 함수 만들기
    • 07
      LifeCycle API
    • LifeCycle API란?
      Component Mount LifeCycle API
      Component Update LifeCycle API
      Component Unmount LifeCycle API
      Counter 프로젝트에 만들어보기
    • 08
      React Hooks
    • useState
      useEffect
    • 09
      React Hooks 전화번호부에 적용하기
    • Custom Hooks으로 Input 값 관리하기
      전화번호부 목록 관리 함수 수정하기
    • 10
      React Redux
    • Redux를 왜 사용할까?
      Redux 용어 정리
      Redux의 3가지 원칙
      Counter에 Redux 적용하기 (1)
      Counter에 Redux 적용하기 (2)
      Counter에 Redux 적용하기 (3)
    • 11
      React Redux 전화번호부에 적용하기
    • 전화번호부에 Redux 적용하기 (1)
      전화번호부에 Redux 적용하기 (2)
      전화번호부에 Redux 적용하기 (3)
    • 12
      Django Server 환경 설정
    • Django Server 환경 설정
    • 13
      Counter 프로젝트 기능 추가 및 Backend와 연결하기
    • 라이브러리 설치 및 디렉토리 구조 변경하기
      CountInput 컴포넌트 만들기 및 Hooks 적용하기
      Axios로 API 연결 및 Redux 코드 변경하기
      App 컴포넌트 변경하기
    • 14
      전화번호부 프로젝트 Backend와 연결하기
    • 라이브러리 설치 및 디렉토리 구조 변경하기
      useInput Custom Hooks 만들기
      Axios로 API 연결 및 Redux 코드 변경하기
      App 컴포넌트 변경하기
    React는 왜 만들어졌는가?
    01 React 개념 및 개발 환경 설정
    React는 왜 만들어졌는가?

    현재 웹 시장에서는 Angular, React, Backbone, Vue 등 여러 웹 라이브러리/프레임워크가 존재합니다.

    default

    하지만 위의 사진에서 볼 수 있듯이 React라는 웹 라이브러리는 여러 웹 프레임워크/라이브러리를 제치고 1등을 차지했습니다. 심지어 위의 기록은 프론트엔드에서 사용되는 것뿐만이 아닌 백엔드에서 사용하는 프레임워크/라이브러리까지 모두 포함한 것입니다. 이처럼 인기 많은 웹 라이브러리인 React는 어떻게 해서 탄생했을까요? 어떤 이유로 페이스북이 React를 개발했는지 알아봅시다.



    1. React Application vs No Library Web Application


    먼저 우리는 앞장에서 언급했던 웹 프레임워크/라이브러리의 도움 없이 쉽게 웹 사이트를 만들어낼 수 있습니다. 단지 HTML, CSS, Javascript를 사용하면 동적인 웹 사이트를 쉽게 만들 수 있죠. 실제로 다른 웹 프레임워크나 라이브러리 없이 오직 HTML, CSS, Javascript로만 만든 웹 사이트도 쉽게 찾아볼 수 있습니다.


    하지만 요즘은 웹 사이트라고 부르지 않고 웹 애플리케이션으로 부릅니다. 그 이유가 뭘까요? 예전에는 단순히 정적인 정보만 보여주는 사이트가 많았습니다. 그때는 웹 사이트라는 이름이 더 잘 어울렸죠. 하지만 지금은 웹상에서 정보를 입력하면 그 정보가 바로바로 업데이트됩니다. 이렇게 유저의 특정 행동에 따라 동적으로 화면을 보여주기 때문에 웹 애플리케이션이라고 부르는 것입니다. 요즘 웹 애플리케이션은 쉽게 동적 인터페이스를 나타내줄 수 있습니다. 하지만 이런 동적 인터페이스에는 수많은 상태 관리가 필요합니다. 아래의 예시를 확인해주세요.

    html
    js

    일반 HTML과 Javascript를 사용한다면 직접 Javascript에서 DOM에 접근하여 result라는 id를 가진 엘리먼트를 가져와 number 변수의 값을 넣어줘야 합니다. 만약 프로젝트에 위와 같은 DOM 접근 / 사용자와의 인터렉션이 많지 않다면 아무런 라이브러리를 사용하지 않고서도 충분히 작업이 가능합니다.


    하지만 위와 같은 코드가 엄청나게 많아진다면 어떻게 해야 할까요?

    또, 이와 비슷한 코드가 여럿 있을 때에는 그때마다 다른 함수를 만들어줘야 할까요?

    물론 엄격하게 규칙을 정하거나 기능별로 파일을 분류한다면 불가능한 방법은 아닙니다. 하지만 수천 줄의 코드 또는 수백 개의 파일을 작성하는 것도, 유지 보수하는 것도 매우 힘든 일이 될 것입니다. 하지만 React와 같은 웹 라이브러리를 사용하면 DOM 관리와 같은 불편함을 최소화시켜줄 뿐만 아니라 코드를 더 간결하게 해줍니다.



    2. Facebook은 왜 React를 개발했을까?


    리액트 공식 블로그의 "Why did we build React?"라는 제목의 글에 핵심적인 힌트가 숨어있습니다. 그 문장은 아마 해당 페이지에 들어가 보면 바로 볼 수 있을 텐데, 그 문장은 아래와 같습니다.

    It encourages the creation of resuable UI components which present data that changes over time.

    먼저 페이스북 사이트의 특징 먼저 알아봅시다.


    페이스북의 핵심은 수많은 타임라인입니다. 이 타임라인에는 또 수많은 요소가 들어갑니다. 사진, 글, 좋아요 버튼, 댓글 버튼 등 말이죠. 만약 웹 라이브러리의 도움 없이 오로지 HTML, CSS, Javascript로 이 모든 것들을 작업한다면 수많은 인터랙션 관리를 위해 수천 줄의 코드를 작성해야 할 수도 있습니다. 하지만 React는 위의 문장에서 볼 수 있듯이 재사용 가능한 UI 컴포넌트의 사용을 장려한다고 합니다. 여기서 UI 컴포넌트란 뒤에서 배울 테지만 지금은 먼저 타임라인 같은 것들이 컴포넌트가 될 수 있다고 생각하시면 될 것 같습니다. 이렇게 React를 통해 반복되는 수많은 타임라인을 간결하게 정리를 할 수 있다는 것이죠. 코드를 재사용함으로써 기존보다 코드량을 훨씬 줄일 수 있고, 그만큼 유지보수도 쉬워집니다.


    그리고 페이스북은 실시간으로 변화하는 데이터를 바로바로 출력합니다. 우리가 좋아요 버튼을 누르면 그 버튼이 빨간 배경색이 칠해지는 것처럼 말이죠. 만약 React를 사용하지 않았다면 몇몇 인터렉션이 발생할 때마다 API를 이용해 프론트 부분인 View를 다시 갱신해줘야 합니다. 하지만 관리해야 할 요소가 많아짐에 따라 관리를 해주는 로직을 작성하는 것도 엄청 힘든 일이며 유지보수는 말도 안 되게 고된 일로 변하게 될 것입니다. 하지만 React는 뒤에서 곧 서술할 것이지만 Virtual DOM을 사용합니다. 화면을 다시 렌더링해주기 전에 미리 Virtual DOM에 Elements를 넣고 기존의 DOM과의 비교를 통해 바뀐 부분만 다시 렌더링해주는 거죠. 이렇게 함으로써 React는 비효율적인 DOM 조작을 줄임으로써 브라우저 내에서 발생하는 연산의 양을 줄여 성능을 개선하는 것입니다.

    질문하기