작성자 : 윤석준
4월 26일 수정 내용 : 기능계획서 기반 라이브러리 매칭 부분을 별도의 파일로 분리했습니다.
4월 28일 수정 내용 : 기능위주의 작성기준을 라이브러리 위주로 변경하였습니다.
라이브러리명 |
버전 |
다운로드 수 |
Last publish |
용량 |
설명 |
SCSS(Syntactically Awesome Style Sheets) |
1.87.0 |
11,602,251 |
3 days ago |
5.7 MB |
기존 CSS 문법과 유사한 구문으로 CSS 코드를 더 효율적이고 체계적으로 작성할 수 있게 해주는 도구 |
-
장점: 호환성 우수, 모든 기능활용, 코드재사용성 및 편리한 유지보수
-
단점: 추가적인 컴파일과정이 필요함, 학습곡선, 잠재적인 복잡성, 디버깅의 어려움
-
프로젝트 이점: CSS 문법 동일하고, 프로젝트의 스타일가이드를 적용하기 쉬움
react-query : 서버.클라이언트 상태관리 확정
라이브러리명 |
버전 |
다운로드 수 |
Last publish |
용량 |
설명 |
react-query |
3.39.3 |
1,339,714 |
2 years ago |
2.26 Mb |
React 애플리케이션에서 서버 상태(데이터 fetching, 캐싱, 업데이트 등)를 관리하는 데 도움을 주는 강력한 라이브러리 |
-
장점: 복잡한 비동기로직을 간편하게 처리, 개발 생산성 향상, 코드 유지보수성 증대, 강력한 개발 도구
-
단점: 학습곡선, 의존성문제, 복잡한 캐시관리, 번들크기 문제
-
프로젝트 이점: 다양한 기능을 제공하며, 데이터 일관성유지로 관리상의 편의를 제공함 |
라이브러리명 |
버전 |
다운로드 수 |
Last publish |
용량 |
설명 |
zustand |
2.1.0 |
19,269 |
3 months ago |
34.2 kB |
작고 빠르며 사용하기 쉬운 상태 관리 라이브러리로, 보일러플레이트 코드를 줄여줍니다 |
-
zustand 장점: 작고 간결한 크기, 보일러플레이트코드감소, 유연한상태 구조, React Hooks 기반 간단한 API
-
zustand 단점: 상태관리 패턴에 대한 충분한 이해가 필요함, 상대적으로 작은 커뮤니티
강력한 디버깅 도구가 기본적으로 제공되지 않음
-
zustand 프로젝트 이점: 성능이 뛰어나며 개발 및 타입 안정성이 뛰어남
| recoil | 0.7.7 | 485,183 | 2 years ago | 2.21 MB | Facebook에서 개발한 실험적인 상태 관리 라이브러리로, atom과 selector라는 새로운 개념을 도입하여 더욱 세밀하고 효율적인 상태 관리를 가능하게 합니다. |
-
recoil 장점: React친화적인API, 원자성, 선택자, 동시성지원, 간편한사용
-
recoil 단점: 실험적인 라이브러리, 새로운개념학습필요, 성능최적화의복잡성
-
recoil 프로젝트 이점: React 친화적인 API에 상태관리가 세분화가 잘되어 있고 정보수집이 쉬워 유지보수에 원활함
react-router-dom : 라우팅 확정
라이브러리명 |
버전 |
다운로드 수 |
Last publish |
용량 |
설명 |
react-router-dom |
1.0.2 |
14 |
3 years ago |
4.09 kB |
* 웹 브라우저 환경에서 React 앱의 라우팅을 구현하기 위한 라이브러리입니다. * URL 변경에 따라 사용자가 보는 컴포넌트를 동적으로 바꿔주는 기능을 제공하여, 마치 여러 페이지로 구성된 웹사이트처럼 느껴지도록 만들어줍니다. 등의 컴포넌트와 훅을 제공합니다. |
-
제공하는 컴포넌트와 훅: BrowserRouter, Routes, Route, Link
-
장점: 쉬운 설정 및 사용, 유연하고 강력한 기능, 활발한 커뮤니티와 풍부한 자료, 웹표준 준수, 용이한 코드분할
-
단점: 학습곡선, 큰 번들크기, 서버사이드 랜더링과의 통합문제
-
프로젝트 이점: 쉬운 설정과 사용으로 보다 편리하게 프로젝트를 생성할 수 있다. |
=================================================================================
라이브러리명 |
버전 |
다운로드 수 |
Last publish |
용량 |
설명 |
axios |
1.8.4 |
54,140,218 |
a month ago |
2.14 MB |
브라우저와 Node.js 환경 모두에서 사용할 수 있는 Promise 기반의 HTTP 클라이언트 라이브러리입니다. 요청 및 응답 인터셉터, 자동 JSON 데이터 변환 등 다양한 기능을 제공합니다. |
fetch API |
생략 |
생략 |
생략 |
생략 |
별도의 라이브러리 설치 없이 JavaScript 내장 함수로 HTTP 요청을 처리할 수 있습니다. Axios에 비해 기능은 적지만 기본적인 요청 처리에 충분합니다. |
-
axios 장점: Promise 기반 API, Node.js와 브라우저 지원, 요청 및 응답 인터셉터, 자동 JSON 데이터 변환
-
axios 단점: 별도의 설치 필요, 복잡한 설정, 번들용량문제
-
axios 프로젝트 이점: 서버와 클라이언트 환경에서 일관된 방식으로 HTTP요청처리가 가능하고 인터셉터기능으로 로깅,인증,에러처리 관리가 쉬움
-
fetch API 장점: 표준,Promise 기반의 API, 기본 사용법이 간결함
-
fetch API 단점: Node.js 환경 지원 부족, JSON 데이터 파싱이 번거로움, 요청 및 응답 인터셉터 부재, 구형 브라우저 지원이 약함
-
fetch API 프로젝트 이점: 스트리밍 응답 처리를 통해 대용량 데이터처리나 실시간 데이터스트리밍 성능 향상시킬 수 있다 생각되어 추천
라이브러리명 |
버전 |
다운로드 수 |
Last publish |
용량 |
설명 |
react-hook-form |
7.56.1 |
10,412,135 |
2 days ago |
1.13 MB |
react 훅 기반의 폼 관리 라이브러리로, 간단하고 효율적인 폼 유효성 검사 및 데이터 관리를 제공합니다. |
formik |
2.4.6 |
2,602,129 |
a year ago |
583 kB |
React 자체에서 제공하는 간단한 상태 관리 메커니즘으로, 비교적 작은 규모의 애플리케이션이나 역학적으로 사용되는 간단한 상태 관리에 유용합니다. |
-
react-hook-form 장점:* 코드가 간결하고, 유효성검사가 쉬우며 재사용성이 높음
-
react-hook-form 단점:* Uncontrolled 컴포넌트에 대한 약간의 학습이 필요함
-
react-hook-form 프로젝트 이점:* 직관적이고 짧은 코드로도 구현이 가능하고, react와 조화롭게 사용이 가능함
-
formik 장점: 복잡한 폼을 쉽게 구축하고 관리할 수 있음, 용이한 테스팅
-
formik 단점: 큰 번들크기, 불필요한 리랜더링
-
formik 프로젝트 이점: 타입스크립트와 다양한 폼 요소가 있음.
라이브러리명 |
버전 |
다운로드 수 |
Last publish |
용량 |
설명 |
yup |
1.6.1 |
6,475,525 |
4 months ago |
260 kB |
폼 유효성 검사를 위한 스키마 빌더 라이브러리로, react Hook Form 또는 formik과 함께 사용하면 강력한 유효성 검사 기능을 구현할 수 있습니다. |
zod |
3.24.3 |
24,442,219 |
4 days ago |
698 kB |
TypeScript-first 스키마 선언 및 유효성 검사 라이브러리. 개발자가 간결하고 읽기 쉬운 방식으로 복잡한 데이터 유효성 검사 로직을 정의하고 실행할 수 있도록 함 |
-
yup 장점: 직관적이고 읽기 쉬운 API, 다양한 내장형 유효성검사, 다국어지원
-
yup 단점: 큰 번들크기, 비동기 유효성 검사가 복잡함, 높은 학습곡선
-
yup 프로젝트 이점: 간단한 기본적인 사용과 다양한 유효성검사를 지원한다는 점이 있음
-
zod 장점: 간결하고 직관적인 API, 작은 번들크기
-
zod 단점: TypeScript 사용을 강제, 커뮤니티 규모나 관련 자료가 아직 풍부하지 않음
-
zod 프로젝트 이점: 유효성검사규칙이 강력하고 다양하고 스키마 합성 및 재사용이 가능
라이브러리명 |
버전 |
다운로드 수 |
Last publish |
용량 |
설명 |
lodash |
4.17.21 |
59,780,386 |
4 years ago |
1.41 MB |
배열, 객체, 문자열 등 다양한 데이터 구조를 다루는 데 유용한 유틸리티 함수들을 제공하는 라이브러리입니다. |
date-fns/Moment.js |
4.1.0 |
27,406,084 |
7 months ago |
22.6 MB |
날짜 및 시간 관련 작업을 쉽게 처리할 수 있는 라이브러리입니다. (Date-fns는 Moment.js보다 가볍고 함수형 프로그래밍 방식에 더 적합합니다.) |
-
lodash 장점: 모듈화로 인한 번들크기 최소화, 검증된 안정성, 함수형 프로그래밍 지원
-
lodash 단점: 불필요한 오버헤드를 발생시킬 우려가 있고 함수가 많아 학습곡선이 높음
-
lodash 프로젝트 이점: 200개 이상의 유틸리티 함수를 제공한다.
함수이름과 동작방식이 일관성이 있어 코드에 대한 학습과 예측이 용이함
-
date-fns/Moment.js 장점: 다양한 언어로 날짜를 형식화하고 구문 분석할 수 있는 다양한 로케일을 제공,
함수명이 일관되어 학습하며 사용하기 쉬움
-
date-fns/Moment.js 단점: 소규모의 커뮤니티형태, 가적인 의존성과 복잡성이 존재
-
date-fns/Moment.js 프로젝트 이점: 날짜에 대한 다양한 지원이 있을 것으로 예상됨
라이브러리명 |
장점 |
단점 |
프로젝트 이점 |
react-oauth/google |
Google에서 개발 및 유지 관리하며, Google API와의 더 나은 호환성과 모범 사례 준수를 보장함 |
Google 로그인에만 적용되며, 다른 소셜 로그인 제공자의 경우 별도의 라이브러리가 필요 |
생략 |
react-kakao-login |
카카오 로그인을 위해 특별히 설계되어, 인기 있는 한국 플랫폼의 통합 프로세스를 간소화 |
카카오 API에 대한 종속성과 컴포넌트 기반 접근 방식으로 약간 덜 현대적으로 느껴짐 |
생략 |
react-facebook-login |
React 구성 요소를 제공, 전 세계적으로 널리 사용되는 플랫폼 |
Facebook 로그인에만 적용되며, 다른 공급자의 경우 별도의 라이브러리가 필요하고 로그인을 설정하는 것이 약간 복잡할 수 있음 |
생략 |
라이브러리명 |
버전 |
다운로드 수 |
Last publish |
용량 |
설명 |
socket.io-client |
4.8.1 |
4,979,921 |
6 months ago |
1.41 MB |
실시간 양방향 통신을 위한 WebSocket 기반 라이브러리입니다. 관리자와 사용자 간의 1:1 채팅 기능을 구현하는 데 사용할 수 있습니다. |
cometchat |
4.3.18 |
106 |
a month ago |
770 kB |
웹 및 모바일 애플리케이션에 실시간 채팅 기능을 통합할 수 있도록 설계된 플랫폼 및 SDK입니다. 다양한 기능과 사용자 인터페이스(UI) 컴포넌트를 제공하여 개발자가 빠르고 쉽게 채팅 기능을 구축할 수 있도록 지원 |
sendbird |
3.1.33 |
15,746 |
2 years ago |
738 kB |
Sendbird는 웹 및 모바일 애플리케이션에 실시간 채팅, 음성 통화, 영상 통화 기능을 통합할 수 있도록 설계된 강력한 플랫폼입니다. 다양한 SDK와 API를 제공하여 개발자가 고품질의 커뮤니케이션 기능을 빠르고 효율적으로 구축할 수 있도록 지원 |
-
socket.io-client 장점: 자동 재연결, 간단하고 직관적인 API, 이진 데이터(이미지.파일)를 지원
-
socket.io-client 단점: 서버 측 종속성이 강하고 지연시간(폴백)이 증가할 수 있음
-
socket.io-client 프로젝트 이점: 실시간 양방향 통신을 지원하여 불만,요청,문의 사항에 빠르게 대처할 수 있다 판단됨.
-
cometchat 장점: 빠른 통합과 다양한 기능을 제공하고 플렛폼지원이 다양함
-
cometchat 단점: 유지관리비용문제, 제한된사용자정의, 타사서비스의 높은 의존도
-
cometchat 프로젝트 이점: 다양한 기능을 제공하고 보안이 잘 되어 있는 것 같음
-
sendbird 장점: 다양한 기능과 안정적인 성능을 제공함
-
sendbird 단점: 비용문제, 새로운 UI구현의 제약, 네트워크에 대한 높은 의존도
-
sendbird 프로젝트 이점: 다양한 기능을 제공하고 보안이 잘 되어 있는 것 같음
라이브러리명 |
장점 |
단점 |
프로젝트 이점 |
react-kakao-maps |
친화적인 React 컴포넌트, 무료사용, 국내서비스에 특화됨 |
추가 라이브러리 의존성, 외국 지원이 부족함, 랜더링 성능문제 |
생략 |
@react-google-maps/api |
최신 기능과 업데이트가 빠름, 함수형 컴포넌트에서 더욱 간결하고 직관적인 코드를 작성할 수 있음 |
비용문제, 초기설정문제, 외부라이브러리에 대한 높은 의존성 |
생략 |
react-naver-maps |
친화적인 React 컴포넌트, 무료사용, 국내서비스에 특화됨 |
비공식 라이브러리로 업데이트 등에 취약할 수 있음, 랜더링 성능문제, 추가 라이브러리 의존성 |
생략 |
- **특징 : React 애플리케이션에서 무한 스크롤 기능을 쉽고 효율적으로 구현할 수 있도록 도와주는 라이브러리
- **장점 : 간편한 사용, 뛰어난 스크롤감지, React Hooks 지원
- **단점 : 접근성문제, 데이터관리가 복잡함, 외부라이브러리에 대한 높은 의존성
- **프로젝트 이점 : 많은 데이터와 큰 이미지를 나타내려고 할 때 큰 역할을 할 것으로 예상됨
- **특징 : 매우 복잡하고 다양한 형태의 리스트나 테이블을 효율적으로 렌더링할 수 있고, 다양한 고급기능을 제공함
- **장점 : 학습곡선이 높고, 번들크기가 큼
- **단점 : 무한스크롤은 직접구현해야 함
- **프로젝트 이점 : 데이터화해야 하는 결제정보나 예약관련된 부분에서는 도움이 될 것으로 예상
3. react-infinite-scroll-component
- **특징 : 스크롤 이벤트 감지 및 다음 데이터 로드 로직을 내장하고 있고, Intersection Observer API를 활용하여 성능 효율적인 라이브러리
- **장점 : 구현이 쉽고 자료를 검색하기가 쉬움
- **단점 : 많은 데이터를 렌더링할 때 성능 문제가 발생할 수 있음
- **프로젝트 이점 : 이전 내용을 검색하는 부분에서 도움이 될 것으로 예상됨
- **특징 : react-window는 React에서 매우 큰 목록 데이터를 효율적으로 렌더링하기 위한 라이브러리입니다.
- **장점 : 크기와 관계없이 일정한 랜더링성능을 유지하고, API가 유연하여 사용자가 요구사항에 맞게 세밀한 조정이 가능함
- **단점 : 복잡한 구현과 CSS 스타일링이 까다로움
- **프로젝트 이점 : 대량의 데이터를 처리하는 데 알맞는 라이브러리로 판단됨
- 간단한 구현과 빠른 시작: react-infinite-scroll-component
- 매우 큰 데이터 목록과 뛰어난 성능: react-window (무한 스크롤 기능 직접 구현 또는 react-window-infinite-loader와 함께 사용)
- 복잡한 리스트/테이블 구조와 다양한 기능: react-virtualized (무한 스크롤 기능 직접 구현 또는 관련 컴포넌트 활용)
bootpay-js, Bootpay SDK
Bootpay API를 React 애플리케이션에 연동하기 위해 Bootpay에서 제공하는 JavaScript SDK를 사용할 수 있습니다.
(별도의 React 래핑 라이브러리가 있을 수도 있습니다.)
라이브러리명 |
버전 |
다운로드 수 |
Last publish |
용량 |
설명 |
react-toastify |
11.0.5 |
2,115,381 |
2 months ago |
536 kB |
간단하고 예쁜 알림 메시지를 표시하는 데 유용한 라이브러리입니다. |
sweetalert2-react-content |
0.3.1 |
43,844 |
2 years ago |
73.4 kB |
다양한 형태의 모달 창을 쉽게 구현할 수 있도록 도와주는 라이브러리입니다. |
- **react-toastify 장점 : 간편한 사용과 다양한 알림유형
- **react-toastify 단점 : 단위 테스트하기가 약간 까다롭고 특정 라이브러리와 충돌할 가능성이 있음
- **react-toastify 프로젝트 이점 : 다양한 예약알림서비스를 통해 고객만족향상을 기대해 볼 수 있는 라이브러리
- **sweetalert2-react-content 장점 : HTML 콘텐츠를 지원하고 Promise 기반으로 처리하여 사용이 간편함
React 컴포넌트 통합되어 자연스럽게 react 개발흐름에 스며들 수 있음
- **sweetalert2-react-content 단점 : 최신버전에서는 React Hooks 강제하고 SweetAlert2 라이브러리에 의존적임
- **sweetalert2-react-content 프로젝트 이점 : 풍부한 기능과 React 컴포넌트의 장점을 활용하여 사용자 친화적인 알림창을 제공할 수 있음
라이브러리명 |
버전 |
다운로드 수 |
Last publish |
용량 |
설명 |
Jest |
29.7.0 |
25,671,757 |
3 months ago |
5.01 kB |
JavaScript 테스팅 프레임워크로, 유닛 테스트 및 컴포넌트 테스트를 작성하는 데 사용됩니다. |
testing-library-selector |
5.1.0 |
50,892 |
4 month ago |
23.5 kB |
사용자 관점에서 React 컴포넌트를 테스트하기 위한 라이브러리입니다. |
- **Jest 장점 : 뛰어난 React 지원, 명확하고 상세한 에러 메시지, TypeScript 지원
- **Jest 단점 : 상대적으로 느린 속도, 부담되는 유지보수, 외부라이브러리와 호환성문제
- **Jest 프로젝트 이점 : 생략
- ** testing-library-selector 장점 : 기존 스타일 구조 활용, React Testing Library와 자연스러운 통합
- ** testing-library-selector 단점 : 테스트의 취약성 증가할 수 있으며 학습곡선이 높다
- ** testing-library-selector 프로젝트 이점 : 특정 UI 요소의 존재 여부나 스타일 속성 등을 직접적으로 검증해야 하는 경우 유용하며
컴포넌트의 스타일링에 사용된 CSS 클래스나 ID를 그대로 활용하여 테스트 코드를 작성할 수 있다고 함
라이브러리명 |
버전 |
다운로드 수 |
Last publish |
용량 |
설명 |
cypress |
14.3.2 |
5,427,693 |
2 days ago |
4.39 MB |
웹 애플리케이션을 위한 차세대 엔드 투 엔드 (E2E) 테스트 프레임워크입니다. 개발자가 빠르고 안정적이며 쉽게 테스트를 작성하고 실행할 수 있도록 설계 |
playwright |
1.52.0 |
21,355,029 |
11 hours ago |
3.18 MB |
Microsoft에서 개발한 Node.js 라이브러리로, Chrome, Firefox, WebKit (Safari), Chromium 등 다양한 브라우저를 자동화하여 웹 애플리케이션의 엔드 투 엔드 (E2E) 테스트, 스크래핑, 자동화 작업을 수행할 수 있도록 지원 |
- ** cypress 장점 : 간편한 설치, 테스트 코드를 작성하고 이해하기 쉬움, 자동 스크린샷 및 비디오 녹화
- ** cypress 단점 : IE 지원 중단, 비용문제, Node.js 환경에서만 실행할 수 있음
- ** cypress 프로젝트 이점 : 실제로 예약하고 결재 그리고 객실 등을 관리한다고 가정할 때 쓰면 좋은 라이브러리라고 판단됨
- ** cypress 장점 : 다중 브라우저를 지원하고 안정적이고 유연하게 UI 요소를 선택할 수 있음
- ** cypress 단점 : Node.js 환경에서만 실행이 가능하고 IE 지원 중단과 새로운 프레임워크로 인한 학습곡선이 존재
- ** cypress 프로젝트 이점 : 개발 시 지원되는 요소가 많고, 활발한 커뮤니티로 정보수집이 용이함.