y.developer
[TIL] Day 53 React는 왜 라이브러리일까? 본문
2023.12.18 월
지금까지 계속해서 React를 사용했었다. 그러나 프레임워크와 라이브러리를 비교하면서 "React는 왜 라이브러리일까"라는 생각이 문득 들었다.
그동안 "React는 라이브러리다"라고 배웠기에 흘러가듯이 넘어갔고 사용해왔다.
이제는 궁금증이 든다. 왜? 왜라는 질문에 바로 답이 떠오르지 않아서 찾아보게 되었다.
가장 많이 사용되고 있는 React와 더 알아가며 친해져보자!
1. React 란?
사용자 인터페이스를 만들기 위한 JavaScript 라이브러리
React는 페이스북에서 개발한 JavaScript 라이브러리로, 웹 애플리케이션의 사용자 인터페이스를 구축하기 위해 사용된다.
2. 그렇다면 왜 React는 라이브러리일까?
앞서 분류해봤던 프레임워크와 라이브러리의 차이점에 대해서 한번더 생각해보자!
1. 프레임워크
원하는 기능 구현에 집중하여 개발할 수 있도록 필요한 기능을 갖추고 있는 것, 일정한 형태를 가지고 다양한 형태의 결과물을 만드는 것
2. 라이브러리
프트웨어를 개발할 때 프로그래밍 사용하는 비휘발성 자원의 모임, 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것
둘 다 공통의 기능을 사용하여 결과물을 만드는 것으로 비슷해 보이지만,
둘의 차이점은 어플리케이션의 제어 흐름의 권한을 누가 가지고 있느냐가 핵심이다.
위의 내용을 봤을 때 React는 라이브러리로서의 특성을 가지고 있다.
프레임워크는 애플리케이션의 흐름과 제어를 프레임워크에게 맡긴다.
그러나 라이브러리는 개발자에게 필요한 기능을 제공하면서도, 애플리케이션의 제어권을 개발자에게 주고 있다.
React는 컴포넌트와 가상 DOM 등의 핵심 기능을 제공하면서도, 애플리케이션의 전반적인 아키텍처나 라우팅과 같은 기능은 개발자가 선택할 수 있도록 한다.
3. 제어의 역흐름 (IoC : Inversion of Control)
전통적인 프로그래밍에서 흐름은 프로그래머가 작성한 프로그램이 외부 라이브러리의 코드를 호출해 이용한다.
하지만 제어 반전이 적용된 구조에서는 외부 라이브러리의 코드가 프로그래머가 작성한 코드를 호출한다.
이 내용을 바탕으로 프레임워크와 라이브러리를 비교해보자.
1. 프레임워크
정해진 프로그램의 틀에 맞게 사용자가 필요한 기능을 입력
2. 라이브러리
호출하는 개발자가 필요한 기능을 원할 때 호출
4. React 라이프사이클
React는 다음과 같이 프로그램 흐름의 기본적인 틀은 정해져 있다.
1) componentWillMount()
2) render()
3) componentDidMount()
앱 실행시 render() 함수는 입력이 필수이고, componentDidMount() 함수는 자동으로 생성되어 개발자가 명시적으로 입력해 줄 필요는 없다.
하지만 개발자가 API를 호출하거나 다른 작업을 수행하기를 원할 때, componentDidMount()를 통해 프로그램을 추가적인 동작을 정의할 수 있다.
이처럼 프로그램 흐름에 작업을 추가하거나 그렇게 하지 않음으로서 프로그램의 흐름을 바꾸는 것이 가능하기 때문에 React가 라이브러리인 것이라고 생각한다.
5. 컴포넌트 중심의 개발
React는 컴포넌트 기반 아키텍처를 채택하고 있다.
개발자는 UI를 작은 독립적인 컴포넌트로 나누어 개발할 수 있다.
이 컴포넌트들은 재사용이 가능하며, 각각이 자체적인 상태(State)와 라이프사이클을 가진다.
또한, 이러한 컴포넌트를 조합하여 복잡한 UI를 구성할 수 있다.
6. 경량하고 유연한 구조
React는 경량하면서도 유연한 구조를 가지고 있다.
라이브러리로서의 특성은 개발자에게 필요한 부분만을 선택하여 사용할 수 있게 한다.
이는 프로젝트의 규모나 요구사항에 따라 개발자가 유연하게 대응할 수 있도록 한다.
7. 커뮤니티와 생태계
React는 활발한 커뮤니티와 다양한 생태계를 구축하고 있다.
수많은 개발자와 기업이 React를 사용하고 있어, 다양한 라이브러리, 도구, 플러그인 등이 지속적으로 발전하고 있다.
이는 풍부한 생태계를 충분히 활용하고 도움을 받을 수 있다는 것을 의미한다.
React는 개발자들이 프로젝트의 요구사항에 따라 효과적으로 개발을 진행할 수 있게 도와주며, 이런 이점 덕분에 React를 지속적으로 사랑 받는 것이다.
하루를 마치며
새벽까지 동료들과 이런 저런 이야기를 나누며 현재 느끼는 어려움이나 앞으로의 공부 방향에 대해서 고민을 나눴다.
속에 있는 깊은 이야기도 하며 서로의 마음에 공감할 수 있었다.
동료들과 더 오랫동안 같이 공부하며 성장하고 싶고, 서로를 응원해주고 싶다.
점점 캠프의 마지막을 향해서 달려가는 느낌이라 하루하루가 더 아쉽다.
하지만 그렇기에 더 소중한 하루하루가 아닌가 싶다.
오늘의 한 줄
이왕 달리는 거 더 열심히 달리자!