일주일동안 강의를 보거나 프로젝트를 하면서 알게된 것을 적는 주말 기술 회고

리액트는 Facebook에서 만든 Javascript의 UI 라이브러리이다.
웹 개발이 복잡해짐에 따라서 html,css,js만으로는 한계가 생겼다.
그래서 DOM을 직접 조작하는 방식의 한계를 느껴 대규모 프로젝트에서 효율적으로 코드를 관리하고, 컴포넌트 기반 UI개발을 지원하는 프론트엔드 프레임워크가 등장했다.
( Angular, React, Vue )
DOM은 문서 객체 모델(Document Object Model)의 약어로 웹 페이지 문서를 트리 구조의 노드로 표현한다. 또한 JavaScript를 사용하여 이러한 노드를 조작할 수 있다.
DOM은 웹 페이지의 요소에 동적으로 접근하고 수정하는데 사용되면, 웹 애플리케이션의 동적인 긴으을 구현하는 데 중요한 역활은 한다.
그럼 왜 앵귤러, 뷰가 있는데 React를 사용할까요?
이러한 다양한 이유들로 사람들은 React를 사용하고 있다.
React는 다양한 특징들로 개발의 편의성을 높혔다.
리액트는 브라우저가 관리하는 실제 DOM이 아닌 가상 DOM을 사용하여 UI 업데이트를 처리한다. 이를 통해 최소한의 DOM조작이 가능하여 신속한 UI 업데이트를 가능하게 하고 성능을 최적화 시켰다.
React는 데이터의 흐름이 한 방향으로만 흐르는 단방향 데이터 흐름을 가진다.
단방향 바인딩은 데이터의 변경이 UI로 전달되어 화면을 업데이트 한다.
앵귤러와 뷰같은 양방향 데이터 바인딩은 규모가 커질수록(대규모 애플리케이션의 경우) 데이터의 흐름을 추적하기가 힘들고 복잡해지는 경향이 있다.
즉, 양방향 바인딩은 UI가 복잡해지면 성능이 저하되지만, 단방향 바인딩은 성능 저하 없이 DOM을 렌더링 시켜준다.
React는 컴포넌트기반 아키텍처를 채택하고 있다.
컴포넌트 기반 아키텍처는 특정 기능을 수행하는 독립적인 단위인 컴포넌트를 이용해서 마치 작은 레고 블록으로 거대한 집을 만들 듯이 프론트엔드를 만들어가는 구조이다.
구성하는 UI요소를 컴포넌트로 분리하여 개발해, 이러한 컴포넌트들을 조합해서 복잡한 UI를 구성할 수 있다.

const hi = <h1>hi</hi>;처럼 JSX문법을 사용한다.
JSX는 Javascript를 확장해서 Xml을 더한 문법이다.
JSX문법을 사용하여서 컴포넌트의 구조와 동작은 선언적으로 작성할 수 있게 해준다. 명령형 프로그래밍은 어떻게 처리할지를 하나하나 코딩하는 방식이라면, 선언적 프로그래밍은 무엇을 해야 하는지를 지정하는 방식이다. 이는 가독성을 높이고, 컴포넌트의 렌더링을 보다 직관적으로 이해할 수 있게 도와준다.
리액트는 단독으로 사용해도 좋지만, React Router를 사용해 페이지간의 전환을 관리하고, 상태 관리를 위해 Redux or MobX와 같은 라이브러리를 함께 사용 할 수 있다.
이번 계기를 통해서 React에 대해서 좀 더 알 수 있는 계기였다고 생각을 한다.