React(리액트) 개념과 사용성 : 리액트는 라이브러리 인가 ....? 프레임워크 인가....?
React란?
- 오픈 소스 자바스크립트 라이브러리중 하나이다.
But, 현재 보고 있는 Do it책에는 프런트엔드 '프레임워크'라고 되어있는데 리액트의 레거시 홈페이지에도 '자바스크립트 라이브러리'라고 소개 되어있기에 일단은 나도 저렇게 정의해 보았다. 관련해서 논란...?이 조금 있기에 찾아보니 사용되는 방식에 따라서 라이브러리로 사용이 되느냐, 프레임워크로 사용이 되느냐를 두고 이중적 정체성을 가지고 있는 듯 했다. 아마 해당 책에서는 create react app이라는 틀이 잡힌 프로젝트를 설치 후 예제를 실행하는 방식이라 프레임워크라고 적은건가 싶기도 한데...자료를 찾아보다 보니 더더 헷갈리는데...😀 ( 책을 다 보고 나면 왜 프레임워크로 정의한 것인가... 가닥이 잡힐것 같기도 하고...??_?? 이건 책보기 끝나면 다시 한 번 더 생각을 정리해 보는 걸로...)
무튼 지금은 찾아보니 원래 리액트 레거시 홈페이지(https://ko.legacy.reactjs.org/docs/create-a-new-react-app.html)에서는 CRA(Create React App)을 사용해서 자습서를 따라하는 예제가 있었는데, 이제 업데이트 되지 않는다는 정보와 새로 바뀐 홈페이지 안내 문구가 있다. 현재 운영중인 리액트 홈페이지(https://react.dev/learn/start-a-new-react-project) 에서는 CRA에 관련된 내용은 없고 다른 회사의 프레임워크 사용으로 리액트 라이브러리를 사용할 것을 권장하고 있는듯 하다. ( 이럼 리액트는 라이브러리라는 개념으로 사용할 것을 권장하고 있으며 )
소프트웨어 개발 에서의 프레임워크와 라이브러리에 대한 이런 저런 정의들을 찾아봤는데 아래와 같이 정리 할 수 있었다...(나무위키 링크참조)
- 라이브러리 : 완전한 프로그램으로 혼자서는 동작할 수 없다. 미리 작성된 코드의 집합으로 이미 작성 된 코드에 추가해서 사용할 수 있다. (예를 들면 Lombok, Gson...)
- 프레임워크 : 라이프 사이클이나 일종의 상태를 가지고 있는데 이를 일정한 틀이라고도 말할 수 있겠다. 대부분의 프레임워크들은 다양한 기능 지원을 위해서 라이브러리들이 포함되어있다. 이런 상태로 존재하며 개발자들에게 제공되기에 가져다 쓰기만 하면 돼서 개발자들의 피로도가 줄어든다는 장점이 있다. (예를 들면 Spring boot)
IoC : Inversion of Control(제어의 역전 : 개발자가 직접 흐름을 제어하는 것이 아니라 외부 프레임워크나 라이브러리에게 제어를 위임하는 것.)의 여부로 라이브러리와 프레임워크의 차이를 설명하는 사람들도 있던데...찾아보니 리액트에도 IoC 패턴을 적용해서 사용할 수 있는거 같은데 사용법이나 관점에 따라 다르게 적용 되는거 같아서...(참고링크)저것도 확실하고 정확한 설명은 아닌것 같다는 판단이 든다.
파면 팔수록 모호해지는 이 경계...지만 그냥 지금 느껴지는건 현재 리액트 공식페이지에서는 라이브러리처럼 사용하기를 바라는 것 같으니 라이브러리라고 답을 해야 하는 걸까....
➡️참고하였음...