- 재사용이 가능한 코드 모음집
- 애플리케이션을 개발 시 쉽고 빠른 생산성을 제공해 개발 속도 향상(편리성 up!!!)
도서관에서 필요한 책(정보)를 꺼낼 수 있는 공간!
프로그래밍에서는, 필요한 기능들이 모여있는 코드들의 집합으로 누가 만들어 놓은 도구를 가져다가 사용!
반복적인 코드작성을 줄이기 위해 클래스,함수,변수들을 만들어 필요할때마다 호출해 사용한다.
즉, 개발주도권이 개발자에게 있다.
예시)[장점 PROS]
- 개발 시간 / 컴파일 시간 단축 / 버그최소화
- 개발시간과 돈 절약
- 코드의 은닉성
[단점 CONS]
- 정적 라이브러리의 경우,
application크기가 라이브러리를 합친 용량이 되기 때문에 직접 구현 시보다 성능이 떨어지는 경우가 있다.- 비슷한 코드 사용이나 중복사용한 경우 메모리공간을 중복으로 차지해 효율성 떨어짐
- 동적 라이브러리의 경우,
외부에서 파일을 불러오므로 컴파일에는 문제없지만,
실행 시 라이브러리의 버전이 맞지 않거나 없다면 문제가 발생한다.
클래스와 라이브러리가 합쳐진 구조로,
원하는 기능 구현에만 집중해 빠르게 개발할 수 있도록 뼈대를 제공한다.
( 프로그래밍 시 필수코드,알고리즘 등 어느정도의 가이드를 제공! )
but 작업의 구조가 정해져 있기 때문에 프레임워크에서 정해놓은 대로 따라야함제어의 역전 (Inversion Of Control, IoC)
제어역전이란,
개발자가 가지고 있어야 할 객체의 제어권을 프레임워크가 대신 해준다는 의미!
예시)[장점 PROS]
- 체계적인 코드 관리로 다른회사라도 같은 프레임워크면 유지보수용이
- 기본적인 보일러 플레이트와 라이브러리 제공으로 작업속도 높이고 단순화 가능, 개발 생산성 높음
- 이미 생성된 코드라 퀄리티 향상
[단점 CONS]
- 유연한 개발 어려움
- 프레임워크에서 사용하는 규칙이나 프레임워크 전용 기능들을 따로 공부해야함.
- 프로젝트의 용량이 증가하므로 성능 최적화 필요
핵심은 '흐름을 누가 가지고 있냐!'
- 프레임워크가, 여러기능을 가진 클래스와 라이브러리가 어떠한 결과물을 구현하고자 합쳐진 형태로 라이브러리 보다 상위의 그룹이라고 볼 수 있다.
- 리액트는 라이브러리인가 프레임워크인가?
내가 필요할때 부르지만, 컴포넌트를 부르기 때문에 라이브러리도,프레임워크도 될 수 있음.
vue도 마찬가지
👩🍳 라이브러리는 요리도구와 재료를 제공해주고 마음대로 요리하는 것 → 다양한 결과!
🍱 프레임워크는 밀키트 같은 것으로 정해진 요리와 방법이 정해져있음 → 완성도 보장!
라이브러리는 docs를 보고 적용방법을 익혀야 한다.
습득력을 키우기!
예외상황) 천만이 넘는 라이브러리들은 왠만해서는 바뀌지 않음. 따로 기술 공부를 해도 괜찮음!