본문 바로가기
IT

Virtual DOM의 React

by 동골여행자 2023. 10. 16.

목차

     

     

    Virtual DOM의 React

     

    React (React.js 또는 ReactJS라고도 불림)은 Facebook에서 개발한 오픈 소스 JavaScript 라이브러리로, 사용자 인터페이스(UI) 및 단일 페이지 응용 프로그램을 작성하는 데 사용됩니다. 주로 웹 응용 프로그램, 특히 복잡하고 동적인 사용자 인터페이스를 가진 애플리케이션을 개발하는 데에 활용됩니다. React는 컴포넌트 기반 아키텍처를 기반으로 하며, 각각의 컴포넌트는 재사용 가능하고 독립적으로 작동할 수 있습니다.

    React의 핵심 개념은 Virtual DOM(Virtual Document Object Model)입니다. Virtual DOM은 실제 DOM과 유사한 구조를 가지며, React 컴포넌트의 상태 변화를 추적하여 최소한의 업데이트만 수행합니다. 이를 통해 성능을 향상시켜 복잡한 UI 업데이트를 효율적으로 처리할 수 있습니다.

    또한, React는 JSX라는 문법을 도입하여 JavaScript 코드 안에 HTML과 유사한 구문을 작성할 수 있게 해줍니다. JSX는 가독성이 좋고 컴파일 과정에서 일반 JavaScript 코드로 변환됩니다.

    React 생태계에는 다양한 추가 패키지와 도구들이 존재하며, Redux와 같은 상태 관리 라이브러리나 React Router와 같은 라우팅 기능을 제공하는 패키지 등을 함께 사용하여 보다 강력하고 유연한 애플리케이션 개발이 가능합니다.

    요약하면, React는 Facebook에서 개발된 오픈 소스 JavaScript 라이브러리로서 UI 및 단일 페이지 응용 프로그램 개발에 주로 사용되며, Virtual DOM과 JSX 문법 등의 기능을 제공하여 효율적인 UI 업데이트와 가독성 있는 코드 작성을 지원합니다.

    컴포넌트 기반 아키텍처: React는 컴포넌트 기반 아키텍처를 따릅니다. 이것은 응용 프로그램이 구성 요소라는 재사용 가능한 작은 코드로 구성되어 있음을 의미합니다. 각 구성 요소는 사용자 인터페이스의 특정 부분과 그 동작을 캡슐화합니다. 구성 요소를 구성하고 재사용하여 복잡한 UI를 구축할 수 있습니다.

    가상 DOM: React는 성능을 향상시키기 위해 실제 DOM(Document Object Model)의 가상 표현을 사용합니다. 구성 요소의 데이터가 변경되면 React는 가상 DOM 트리를 만들고 이전 DOM 트리와 비교합니다. 그런 다음 실제 DOM을 업데이트하는 데 필요한 최소 변경 수를 계산합니다. 이 프로세스는 DOM을 직접 조작하는 것보다 효율적입니다.

    선언형: React 는 선언형의 프로그래밍을 장려합니다. 즉, 언제든지 UI가 어떻게 보이는지 설명하고 React가이 설명과 일치하도록 DOM을 업데이트합니다. 이렇게 하면 응용 프로그램의 동작을 쉽게 추론할 수 있습니다.

    JSX: React 는 컴퍼넌트의 구조와 컨텐츠를 정의하기 위해서 JSX (JavaScript XML) 를 사용합니다. JSX 는, JavaScript 파일내에 HTML 와 같은 코드를 기술할 수 있도록(듯이) 하는 JavaScript 의 구문 확장 기능입니다. React 구성 요소는 JSX를 사용하여 렌더링 로직을 정의합니다.

    State 및 Props: React 구성 요소는 상태와 props라는 두 가지 주요 메커니즘을 통해 데이터를 관리하고 통신할 수 있습니다. State는 구성 요소의 내부 데이터를 나타내며 시간이 지남에 따라 변경 될 수 있지만 props는 상위 구성 요소에서 하위 구성 요소로 데이터를 전달하는 데 사용됩니다. 상태 또는 속성이 변경되면 React는 구성 요소를 다시 렌더링합니다.

    단방향 데이터 흐름 : React에서 데이터는 상위 구성 요소에서 하위 구성 요소로 한 방향으로 흐릅니다. 이렇게하면 구성 요소 계층 구조를 통한 데이터 흐름이 명확 해지고 데이터 변경이 응용 프로그램 UI에 어떤 영향을 미치는지 이해할 수 있습니다.

    커뮤니티 및 에코시스템: React는 대규모의 활발한 커뮤니티를 보유하고 있으며, React의 기능을 보완하는 수많은 타사 라이브러리, 도구 및 확장 기능을 제공합니다. 인기 있는 것은 라우팅용 React Router, 상태 관리용 Redux, 사전 구축된 UI 컴포넌트용 Materials-UI 등입니다.

    React Native: React는 React Native를 통해 모바일 애플리케이션을 구축하는 데에도 사용할 수 있습니다. 이를 통해 개발자는 동일한 React 개념을 사용하여 iOS 및 Android 플랫폼용 네이티브 모바일 앱을 만들 수 있습니다.

    서버측 렌더링: React는 서버측 렌더링(SSR)에 사용할 수 있습니다. 이렇게 하면 서버에서 구성 요소를 렌더링하고 미리 렌더링된 HTML을 클라이언트에 보내 페이지 초기 로드 시간과 SEO를 향상시킬 수 있습니다.

    도구: 새 프로젝트를 설정하기 위한 Create React App, 디버깅 및 프로파일링을 위한 다양한 브라우저 확장 프로그램 및 개발 도구 등 React 애플리케이션을 개발하는 데 사용할 수 있는 다양한 도구가 있습니다.

    React는 사용 편의성, 성능 최적화 및 강력한 커뮤니티 지원을 통해 웹 개발 커뮤니티에서 널리 사용됩니다. 기능을 최대한 활용하고 개발 프로세스를 간소화하기 위해 상태 관리에는 Redux, 번들에는 Webpack, 전송에는 Babel 등의 다른 기술과 함께 사용되는 경우가 많습니다.

    Facebook이 개발한 React에는 흥미로운 역사가 있습니다. 이 회사는 웹 응용 프로그램의 사용자 인터페이스를 구축할 때 직면했던 특정 문제를 해결하기 위해 만들어졌습니다. React의 간단한 역사는 다음과 같습니다.

    React의 탄생 : React는 Facebook 소프트웨어 엔지니어 인 Jordan Walke가 처음 개발했습니다. 처음에는 2011년에 Facebook 뉴스피드에 사용되었습니다. 이 프로젝트는 사내 해커슨 프로젝트로 시작되었으며 나중에 오픈 소스화되었습니다.

    오픈소스: React는 2013년 5월 Facebook에서 공식적으로 오픈소스화되어 외부 개발자가 사용하고 기여할 수 있게 되었습니다. 이 움직임은 곧 웹 개발자들 사이에서 명성을 얻었습니다.


    React의 주요 혁신:


    가상 DOM: React의 가상 DOM은 획기적인 개념이었습니다. 브라우저의 실제 DOM을 업데이트하는 보다 효율적인 방법이 도입되어 애플리케이션 속도와 응답성이 향상되었습니다.
    JSX: React는 JSX를 도입했습니다. 이를 통해 개발자는 JavaScript 내에서 HTML과 유사한 구문을 작성할 수 있습니다. 이 접근 방식을 사용하면 UI 구성 요소를 쉽게 구축하고 유지 관리할 수 있습니다.
    컴포넌트 기반 아키텍처: React는 사용자 인터페이스를 구축하기 위한 컴포넌트 기반 아키텍처를 추진했습니다. 컴포넌트를 쉽게 재사용할 수 있으므로 코드의 서비스 가능성과 재사용성이 향상되었습니다.
    React Native: 2015년 Facebook은 React 확장 기능인 React Native를 출시했습니다. 이를 통해 개발자는 웹 개발과 동일한 구성 요소와 원칙을 사용하여 iOS 및 Android용 모바일 애플리케이션을 구축할 수 있습니다. React Native는 네이티브 룩앤필을 갖춘 크로스 플랫폼 모바일 앱을 만들 수 있는 기능으로 인기를 끌었습니다.

    커뮤니티 성장: React는 곧 강력하고 활발한 개발자 커뮤니티를 획득했습니다. 이 커뮤니티는 상태 관리를 위한 Redux, 라우팅을 위한 React Router 및 많은 UI 구성 요소 라이브러리와 같은 React를 보완하는 다양한 타사 라이브러리 및 도구를 개발하는 데 기여했습니다.

    업데이트 및 개선: 오랫동안 React는 몇 가지 업데이트 및 개선을 해왔습니다. Facebook은 성능과 개발자 경험을 개선하기 위해 적극적으로 노력하고 있습니다. 주목할만한 업데이트에는 기능 구성 요소의 상태 관리를 단순화하는 React 16.8의 후크 배포가 포함됩니다.

    서버 측 렌더링 : React는 서버 측 렌더링 (SSR)에 널리 사용되며 초기 페이지로드 속도를 높이고 검색 엔진 최적화 (SEO)를 향상시킵니다. 이 기능은 유니버설에서 동형 웹 응용 프로그램을 구축하는 일반적인 옵션입니다.

    React Fiber : React Fiber는 React의 핵심 알고리즘을 크게 다시 작성하여 성능을 향상시키고 비동기 렌더링과 같은 새로운 기능을 허용하도록 설계되었습니다. React 16에서 소개되었습니다.

    현재 React: React는 사용자 인터페이스를 구축하기 위한 가장 인기 있는 JavaScript 라이브러리 중 하나입니다. 개발은 현재 진행 중이며 현대 웹 및 모바일 애플리케이션 개발의 기초가 되고 있습니다.

    React의 역사는 React가 웹 개발에 미치는 영향과 개발자와 업계 전반의 변화하는 요구를 충족시키기 위해 React가 어떻게 진화했는지 보여줍니다. 이는 웹 및 모바일 애플리케이션을 구축하는 방법에 영향을 미쳤을 뿐만 아니라 보다 광범위한 JavaScript 생태계에 기여했습니다.