8. 프론트엔드 관련 라이브러리 정리한 자료 (4월 26일 수정) - TEAM-PROJECT-ACC/trip-at-five-client GitHub Wiki

작성자 : 윤석준
4월 26일 수정 내용 : 기능계획서 기반 라이브러리 매칭 부분을 별도의 파일로 분리했습니다.
4월 28일 수정 내용 : 기능위주의 작성기준을 라이브러리 위주로 변경하였습니다.

SCSS : UI 및 스타일링 확정

라이브러리명 버전 다운로드 수 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, 캐싱, 업데이트 등)를 관리하는 데 도움을 주는 강력한 라이브러리
  • 장점: 복잡한 비동기로직을 간편하게 처리, 개발 생산성 향상, 코드 유지보수성 증대, 강력한 개발 도구
  • 단점: 학습곡선, 의존성문제, 복잡한 캐시관리, 번들크기 문제
  • 프로젝트 이점: 다양한 기능을 제공하며, 데이터 일관성유지로 관리상의 편의를 제공함 |

zustand : 전역상태관리 확정

라이브러리명 버전 다운로드 수 Last publish 용량 설명
zustand 2.1.0 19,269 3 months ago 34.2 kB 작고 빠르며 사용하기 쉬운 상태 관리 라이브러리로, 보일러플레이트 코드를 줄여줍니다
  • zustand 장점: 작고 간결한 크기, 보일러플레이트코드감소, 유연한상태 구조, React Hooks 기반 간단한 API
  • zustand 단점: 상태관리 패턴에 대한 충분한 이해가 필요함, 상대적으로 작은 커뮤니티 강력한 디버깅 도구가 기본적으로 제공되지 않음
  • zustand 프로젝트 이점: 성능이 뛰어나며 개발 및 타입 안정성이 뛰어남

recoil 전역상태관리 후보

| 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
  • 장점: 쉬운 설정 및 사용, 유연하고 강력한 기능, 활발한 커뮤니티와 풍부한 자료, 웹표준 준수, 용이한 코드분할
  • 단점: 학습곡선, 큰 번들크기, 서버사이드 랜더링과의 통합문제
  • 프로젝트 이점: 쉬운 설정과 사용으로 보다 편리하게 프로젝트를 생성할 수 있다. |

=================================================================================

HTTP 요청

라이브러리명 버전 다운로드 수 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 프로젝트 이점: 다양한 기능을 제공하고 보안이 잘 되어 있는 것 같음

지도 API

라이브러리명 장점 단점 프로젝트 이점
react-kakao-maps 친화적인 React 컴포넌트, 무료사용, 국내서비스에 특화됨 추가 라이브러리 의존성, 외국 지원이 부족함, 랜더링 성능문제 생략
@react-google-maps/api 최신 기능과 업데이트가 빠름, 함수형 컴포넌트에서 더욱 간결하고 직관적인 코드를 작성할 수 있음 비용문제, 초기설정문제, 외부라이브러리에 대한 높은 의존성 생략
react-naver-maps 친화적인 React 컴포넌트, 무료사용, 국내서비스에 특화됨 비공식 라이브러리로 업데이트 등에 취약할 수 있음, 랜더링 성능문제, 추가 라이브러리 의존성 생략

무한 스크롤

1. react-kakao-maps

  • **특징 : React 애플리케이션에서 무한 스크롤 기능을 쉽고 효율적으로 구현할 수 있도록 도와주는 라이브러리
  • **장점 : 간편한 사용, 뛰어난 스크롤감지, React Hooks 지원
  • **단점 : 접근성문제, 데이터관리가 복잡함, 외부라이브러리에 대한 높은 의존성
  • **프로젝트 이점 : 많은 데이터와 큰 이미지를 나타내려고 할 때 큰 역할을 할 것으로 예상됨

2. react-virtualized

  • **특징 : 매우 복잡하고 다양한 형태의 리스트나 테이블을 효율적으로 렌더링할 수 있고, 다양한 고급기능을 제공함
  • **장점 : 학습곡선이 높고, 번들크기가 큼
  • **단점 : 무한스크롤은 직접구현해야 함
  • **프로젝트 이점 : 데이터화해야 하는 결제정보나 예약관련된 부분에서는 도움이 될 것으로 예상

3. react-infinite-scroll-component

  • **특징 : 스크롤 이벤트 감지 및 다음 데이터 로드 로직을 내장하고 있고, Intersection Observer API를 활용하여 성능 효율적인 라이브러리
  • **장점 : 구현이 쉽고 자료를 검색하기가 쉬움
  • **단점 : 많은 데이터를 렌더링할 때 성능 문제가 발생할 수 있음
  • **프로젝트 이점 : 이전 내용을 검색하는 부분에서 도움이 될 것으로 예상됨

4. react-window

  • **특징 : react-window는 React에서 매우 큰 목록 데이터를 효율적으로 렌더링하기 위한 라이브러리입니다.
  • **장점 : 크기와 관계없이 일정한 랜더링성능을 유지하고, API가 유연하여 사용자가 요구사항에 맞게 세밀한 조정이 가능함
  • **단점 : 복잡한 구현과 CSS 스타일링이 까다로움
  • **프로젝트 이점 : 대량의 데이터를 처리하는 데 알맞는 라이브러리로 판단됨

  • 간단한 구현과 빠른 시작: react-infinite-scroll-component
  • 매우 큰 데이터 목록과 뛰어난 성능: react-window (무한 스크롤 기능 직접 구현 또는 react-window-infinite-loader와 함께 사용)
  • 복잡한 리스트/테이블 구조와 다양한 기능: react-virtualized (무한 스크롤 기능 직접 구현 또는 관련 컴포넌트 활용)

결제 API 연동

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 프로젝트 이점 : 개발 시 지원되는 요소가 많고, 활발한 커뮤니티로 정보수집이 용이함.

⚠️ **GitHub.com Fallback** ⚠️