Pagy v43은 여러 핵심 개선 사항을 통해 페이지네이션 솔루션으로서의 입지를 강화했습니다. 주요 특징은 다음과 같습니다.
주요 개선 사항
- 새로운 페이지네이션 기법: Pagy 전용 Keynav 페이지네이션을 도입하여 가장 빠른 키셋 기반 페이지네이션을 프런트엔드 헬퍼와 함께 제공합니다.
- 자동화 및 설정 간소화: 설정 요구사항을 99%까지 줄여 개발 초기 단계를 대폭 간소화했습니다.
- 단순화된 API:
pagy메서드와@pagy인스턴스만으로 모든 컬렉션을 페이지네이션하고 다양한 내비게이션 태그 및 헬퍼를 사용할 수 있도록 API가 단순화되었습니다. 메서드는 사용될 때만 자동으로 로드되어 메모리 소비를 최소화합니다. - 새로운 대화형 개발 도구: PagyWand를 통해 앱 테마와 Pagy CSS를 통합하고, Pagy AI를 문서 및 앱 내에서 활용할 수 있습니다.
- 새로운 문서화: 간결하고 직관적이며 이해하기 쉬운 형태로 문서를 전면 개편했습니다.
Pagy v3 대비 향상된 점
- 광범위한 호환성: 모든 환경 및 컬렉션 유형과 호환됩니다.
- 다양한 페이지네이션 기법 지원: OFFSET, COUNTLESS, KEYSET, KEYNAV, CALENDAR 등 다양한 페이지네이션 기법을 지원합니다.
- 렌더링 유연성: 서버 측 렌더링 또는 인기 있는 CSS 프레임워크 및 API를 위한 더 빠른 클라이언트 측 렌더링을 지원합니다.
- 최소 설정 및 효율성: 실제로 사용되는 메서드만 자동으로 로드하여 거의 제로에 가까운 설정으로 운영됩니다.
- 높은 품질 보장: Ruby, HTML, JavaScript E2E(End-to-End)에 대한 100% 테스트 커버리지를 자랑합니다.
활용 예시```ruby
Pagy 포함 (일반적으로 application_controller.rb)include Pagy::Method
오프셋 기반 페이지네이션@pagy, @records = pagy(:offset, Product.all)
키셋 기반 페이지네이션 (가장 빠른 기법)@pagy, @records = pagy(:keyset, Product.order(my_order).all)
JSON:API 지원@pagy, @records = pagy(:offset, Product.all, jsonapi: true)render json: { links: @pagy.urls_hash, data: @records }# 모델 확장 및 검색 엔진 연동 (예: application_record.rb)extend Pagy::Searchsearch = Product.pagy_search(params[:q])@pagy, @response = pagy(:elasticsearch_rails, search)
캘린더 페이지네이션@calendar, @pagy, @records = pagy(:calendar, collection, year: {}, month: {}, offset: {})```### 렌더링 옵션
- 서버 측 렌더링:
series_nav,series_nav(:bootstrap),series_nav(:bulma)등을 통해 다양한 스타일의 내비게이션 바를 렌더링합니다. - 클라이언트 측 렌더링:
Pagy.sync_javascript를 통해 JavaScript를 동기화하고,series_nav_js,input_nav_js등으로 빠르고 반응형인 내비게이션을 구현합니다.