framework
- 프레임워크는 이미 짜여진 틀(frame)이 있고,
그 안에 원하는 기능을 채워 넣어 프로그램을 완성한다.
- 틀 밖으로 확장하거나 다른 프레임워크/라이브러리를 함께 사용하기 어렵다. (충돌 위험)
- 상대적으로 무겁다 (사용하지 않는 것도 이미 구현되어 있기 때문)
library
- 정해진 틀이 없어 원하는 곳에 가져다 쓸 수 있다.
- 다른 라이브러리와 충돌하지 않는다.
- 상대적으로 가볍다.
React
유저 인터페이스를 구현하는 라이브러리
리액트의 핵심은 가상 DOM을 사용한다는 것
** Angular는 프레임워크로, 모바일을 만드는 Angular native에서 React native를 사용한다.
VirtualDOM
DOM을 추상화한 자바스크립트 객체
실제 DOM을 직접 처리하는 작업은 상대적으로 성능이 좋지 않을 뿐 아니라 관리하기도 힘들다.
기존의 View는 데이터가 변하면 전체 페이지를 새로 렌더링 하지만, React는 페이지를 미리 그려 놓고 변경된 데이터에 해당하는 부분만 수정한다.
React의 장점
- 배우기 간단하다. (component 사용)
- VirtualDOM을 사용
- Garbage Collection
- 메모리 관리
- 성능
- 서버 사이드 렌더링 / 클라이언트 사이드 렌더링 모두 지원
-> 초기 구동 딜레이 & SEO (검색엔진최적화)
- UI를 간편하게 수정 & 재사용 가능
- 페이스북이 꾸준히 지원함 (자사 페이스북 일부, 인스타에 react가 사용됨)
- 다른 프레임워크나 라이브러리와 혼용 가능 (원하는 부분에서만 사용 가능)
React의 단점
- View Only
- learning curve가 높다 (자바스크립트 배경지식이 중요)
- IE8 이하 지원 x -> react 14 이하의 버전 + polyfill 로 구현 가능