프레임워크는 뼈대나 기반구조를 뜻하고 제어의 역전 개념이 적용된 대표적인 기술이다.
소프트웨어에서의 프레임워크는 소프트웨어의 특정 문제를 해결하기 위해 상호협력하는 클래스와 인터페이스의 집합이라 할 수 있으며 완성된 어플리케이션이 아닌 프로그래머가 완성시키는 작업을 해야 한다.
라이브러리는 단순 활용가능한 도구들의 집합을 말한다. 즉, 개발자가 만든 클래스에서 능동적으로 호출하여 사용, 클래스들의 나열로 필요한 클래스를 불러서 사용하는 방식을 취하고 있다.
이 둘의 차이는 제어 흐름에 대한 주도성이 누구에게/어디에 있는가 즉, 어플리케이션의 flow를 누가 쥐고 있느냐에 달려 있다.
💡 프레임워크는 전체적인 흐름을 이미 자체적으로 가지고 있어 개발자가 그 흐름(방식)에 맞게 코드를 작성해야하고,
💡 라이브러리는 개발자가 흐름을 가지고 원하는 라이브러리를 가져다 사용할 수 있다. (하나의 기능만을 도구처럼 사용한다.)
리액트는 자기만의 문법을 가진 앵귤러나 뷰와 다르게 대부분 js문법을 그대로 활용하여 js의 활용도가 높다.
또한 페이스북의 지속적인 관리와 함께 생태계가 활성화되어 있어 리액트를 활용하면서 마주할 문제들에 대한 해결방안을 쉽게 찾아볼 수 있고, 이는 곧개발자의 생산성을 향상시킨다.
마지막으로 React Native를 통해 웹뿐만 아니라 ios/안드로이드 기반의 모바일 앱도 개발할 수 있다.(= 하이브리드 앱) 이는 시장에서 react사용을 선호하는 이유이기도 하다.