프레임워크
개발자가 소프트웨어를 개발함에 있어 코드를 구현하는 시간을 줄이고 재사용성을 증가시키기위한 일련의 클래스 묶음이나 뼈대, 기반구조라 불리며 제어의 역전 개념이 적용된 대표적 기술이다.
소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합이다.
특징
- 개발할 수 있는 범위가 정해져 있고 개발자는 이러한 따라야하는 가이드를 제공 받는다.
- 프레임워크는 다양한 도구 및 플러그인을 제공한다.
- 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성되어 있어 추상적인 개념들이 문제를 해결하기 위해 같이 작업하는 방법을 정의한다.
- 컴포넌트의 재사용이 가능하며 높은 수준에서 패턴들을 조작화할 수 있다.
예시
Django, Ruby, React Native, Flutter, Angular, Vue.js, Svelt ...
라이브러리
개발자가 만든 클래스들의 나열로, 다른 프로그램들에서 사용할 수 있도록 제공하는 방식이며 소프트웨어 개발 시 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다.
단순 활용 가능한 도구들의 집합으로 개발자가 만든 클래스에서 호출하여 사용한다.
예시
Flask, Mongoose, React(UI 라이브러리) ...
리액트는 라이브러리??
더보기
공식 홈페이지에서도 리액트는 라이브러리라고 정의를 하고 있으며 UI를 만드는 기능만 제공해 주기에 프레임워크가 아닌 UI라이브러리이다.
공통점
- 복잡한 개발을 편리하게 하기 위해 미리 작성해서 제공해준 코드이다.
- 필요한 기능을 미리 만들어서 사용할 수 있는 형태를 제공하며 개발자는 모든 것을 다 만들지 않아도 되서 편리하게 개발을 할 수 있다.
차이점
제어 흐름(어플리케이션의 흐름)에 대한 주도권을 누가 가지고 있느냐에 따라 달라진다.
- 프레임워크는 제어 흐름의 주도성을 스스로 갖고 사용자는 그 안에서 필요한 코드를 짜 넣는 방식이다.
- 반면 라이브러리는 개발자가 라이브러리를 가져다 사용하고 호출하는 측(개발자)에서 주도성을 가지고 있다.
- 프레임워크는 주도성을 가지고 프로그래밍에 대한 규칙을 가지고 있기에 개발자는 이 규칙에 맞춰 개발을 해야한다.
예시)
라이브러리는 톱, 망치, 삽과 같은 연장 프레임워크는 차, 비행기, 배와 같은 탈 것
탈 것(프레임워크)는 조작하는 방법이 정해져 있고 정해진 곳으로만 다녀야 합니다. 그렇기에 사람이 차를 타고 바다를 건너고 싶어도 그럴 수 없듯이 주도성이 탈 것에게 있다
연장을 통해서 땅을 파고 싶을 때 삽뿐만아니라 망치를 통해서도 땅을 팔 수는 있다. 그렇기에 사람에게 주도성이 있어 어떻게 할지는 사람이 정하면 된다.
📌 Reference
'CS > 프레임워크&라이브러리' 카테고리의 다른 글
[React] 18버전의 추가된 새로운 기능 (step- 2) (0) | 2024.02.24 |
---|---|
React v18 - 2 (0) | 2024.02.24 |
React v18 - 1 (0) | 2024.02.17 |
[React] 18버전의 추가된 새로운 기능 (step- 1) - 강신범 (0) | 2024.02.17 |
리액트와 jQuery의 차이점 (0) | 2023.11.02 |