해당 글은 다음과 같은 블로그 및 자료를 참고했습니다 !
https://github.com/gnaeus/react-ioc
GitHub - gnaeus/react-ioc: Hierarchical Dependency Injection with new React 16 Context API
Hierarchical Dependency Injection with new React 16 Context API - gnaeus/react-ioc
github.com
https://canoe726.tistory.com/23
React 는 왜 프레임워크가 아니라 라이브러리일까?
React에 관한 글을 작성하다가 React는 왜 라이브러리일까? 그리고 프레임워크와 라이브러리의 차이점은 무엇일까? 에 대한 해답을 얻기위해 포스팅을 작성하게 되었습니다. 1. React 는 프레임워크
canoe726.tistory.com
https://stonehee99.tistory.com/15
제어의 역전(IOC) 이란?
제어의 역전(Inversion of Control, Ioc)는 소프트웨어 엔지니어링에서 매우 중요한 개념입니다. 이 시간에는 함께 제어의 역전이 무엇을 의미하는지 알아보도록 하겠습니다. 편의상 예제 코드는 Java를
stonehee99.tistory.com
이번 글은 저번 포스팅에서 제가 제대로 이해하지 못했던 부분과
선배님들의 포스팅을 참고하여 좀 더 명확하게 이해한 내용을 바탕으로 작성해보았습니다.
전 포스트에서 말했던 것처럼 리액트(React)는 라이브러리로 분류됩니다.
프레임워크가 아닌 라이브러리로 분류되는 주된 이유는
'제어의 역전(Inversion of Control, IoC)' 원칙을 완전히 구현하지 않기 때문입니다.
그렇다면 제어의 역전이란 무엇일까요 ?
제어의 역전(IoC)이란?
제어의 역전이란 프로그램의 흐름을 개발자가 직접 관리하는 게 아니라,
프레임워크가 대신 관리하는 소프트웨어 디자인 원칙을 뜻해요.
전통적인 프로그래밍 방식에서는 개발자가 애플리케이션의 흐름을 직접 제어하지만,
IoC가 적용된 환경에서는 프레임워크가 그 역할을 담당하죠.
쉽게 말해, 프레임워크는 애플리케이션의 큰 틀을 잡아주고,
개발자는 그 안에서 정해진 방식대로 코드를 작성해야 해요.
반면, 라이브러리는 필요한 기능만 골라서 사용할 수 있고,
애플리케이션의 흐름을 직접 제어할 수 있어요.
예를 들어, Spring과 같은 프레임워크는 애플리케이션의 생명주기를 관리합니다.
즉, 개발자가 직접 객체를 생성하고 관리하는 것이 아니라,
프레임워크가 객체(컴포넌트)를 생성하고, 사용하고, 소멸하는 과정을 책임집니다.
🔄 생명주기란?
객체가 생성(Mounting) → 업데이트(Updating) → 소멸(Unmounting) 되는
과정 전체를 생명주기(Life Cycle) 라고 합니다.
이 과정에서 특정 시점마다 실행되는 메서드를
라이프사이클 메서드(Lifecycle Method) 또는 라이프사이클 이벤트라고 합니다.
개발자는 프레임워크가 정한 규칙과 구조를 따라야 하며,
객체의 생성과 관리는 프레임워크가 담당합니다.
개발자는 프레임워크가 정한 규칙과 구조를 따라야 하며,
객체의 생성과 관리도 프레임워크가 담당하죠.
리액트는 왜 제어의 역전이 없을까?
리액트는 애플리케이션의 전체적인 구조나 흐름을 강제하지 않아요.
개발자가 원하는 방식으로 설계할 수 있기 때문에,
데이터 흐름과 상태 관리 방식도 자유롭게 선택할 수 있어요.
예를 들어, 상태 관리를 위해 Redux, Context API 등을 선택할 수 있고,
라우팅을 구현하려면 React Router 같은 별도 라이브러리를 사용해야 해요.
이는 프레임워크가 아니라 라이브러리이기 때문에 가능한 일이죠.
또한, 리액트는 UI 컴포넌트 렌더링과 상태 관리에 집중하고 있어요.
전체적인 구조를 관리하는 역할은 하지 않기 때문에,
HTTP 요청이나 라우팅 같은 기능은 자체적으로 제공하지 않아요.
즉, 개발자가 필요한 기능을 직접 구현해야 하고,
전체적인 애플리케이션 아키텍처도 자유롭게 설계할 수 있어요.
프레임워크와의 주요 차이점은 무엇일까요
프레임워크와 리액트의 또 다른 큰 차이점은
코드의 호출 방식이에요.
프레임워크는 개발자가 작성한 코드를 내부에서 알아서 호출하지만,
리액트는 개발자가 직접 리액트의 기능을 호출해야 해요.
즉, 리액트에서는 useEffect를 언제, 어떻게 실행할지
개발자가 직접 결정해야 하죠.
프레임워크는 애플리케이션의 전체적인 구조와 규칙을 제공하고,
생명주기와 이벤트를 자체적으로 관리해요.
또한, 라우팅, 상태 관리, HTTP 요청 같은 기능이
기본적으로 포함되어 있어요.
반면, 리액트는 UI 라이브러리라서 이런 기능이 없고,
필요한 경우 개발자가 직접 추가해야 해요.
쉽게 말해서,
리액트가 라이브러리로 분류되는 핵심 이유는
👉 제어의 역전 원칙을 완전히 구현하지 않기 때문이에요.
덕분에 개발자가 애플리케이션의 흐름을 자유롭게 설계할 수 있지만,
더 많은 책임을 져야 하죠.
마지막으로
완벽하게 정리해서 말했다고는 말하진 못하겠습니다.
그냥 열심히 공부하고, 재미있게 배워나가려고 해요.
부족한 글 읽어주셔서 감사합니다.
'리액트' 카테고리의 다른 글
리액트 개발자가 되고싶어요 (1) | 2025.02.06 |
---|