리더보드 만들기 - 1

2024. 9. 25. 02:45·프로젝트
반응형

최근 css/js로 애니메이션 효과를 넣는게 재미있어서 이것저것 만들어 보다가 리더보드를 만들면 어떨까 생각했다. 처음에는 깔끔한 UI로 구성된 Vue 컴포넌트를 만드려고 했는데 실시간 순위라는 주제가 공부해볼만한 내용인 것 같아 백엔드/프론트엔드 모두 구현해보려고 한다. 일단 어떻게 진행할지 간단히 기획해 봤다.

  • 순위가 변하는걸 보여주는 Vue 컴포넌트 구현
  • 유저, 점수 데이터를 조회하는 API 구현
  • 실시간으로 점수 변동이 반영되도록 Vue 컴포넌트 수정

실시간에 대해서는 좀 더 시나리오를 고민해봐야겠다. 점수 변동이 있을 때마다 반영된 데이터를 보여줄지, 일정 시간마다 조회할지에 따라 백엔드 구현이 달라질 것 같다.

기술 스택은 Springboot, Vue.js를 사용하고 필요하면 redis를 추가할지도 모른다.

일단 프로젝트를 생성하고 간단히 순위 변동 애니메이션을 적용해봤다. 디자인은 다른 레퍼런스들 참고하면서 조금씩 수정해야겠다…

점수가 높은 순으로 갱신된다.

 

 

 

Vue의 Transition컴포넌트를 사용해서 애니메이션 효과를 추가했다.

다음 조건이 충족될 때 애니메이션이 발생한다.
- `v-if`를 통한 조건부 렌더링
- `v-show`를 통한 조건부 표시
- 스페셜 엘리먼트 `<component>`를 통해 전환되는 동적 컴포넌트
- `key`라는 특수한 속성 값 변경

Transition 컴포넌트를 사용할 때는 진입/진출에 대해 이해하고 있어야한다. 엘리먼트가 표시되는 과정, 사라지는 과정에 대해 정의된 클래스들이 있다. 여기에 css로 애니메이션을 정의하면 엘리먼트가 등장하거나 사라질 때 애니메이션 효과가 발생한다.

.fade-enter-active,
.fade-leave-active {
  transition: opacity 0.5s ease;
}

.fade-enter-from,
.fade-leave-to {
  opacity: 0;
}

트랜지션 효과의 이름을 지정해 적용할 수 있는데 자세한 내용은 공식 문서에 잘 설명되어있어서 도움이 많이 됐다.

리더보드에서 이름, 점수를 표시하는 컴포넌트를 만들고 v-for로 다중생성하는 형태로 구성했다. `Transition`은 하나의 엘리먼트에만 적용할 수 있어서 사용할 수 없고, 대신 사용할 수 있는 `TransitionGroup`이 있다.

<TransitionGroup name="slide">
  <div v-for="row in rows"
       :key="row.id">
    <div>
      {{ row.name }}
    </div>
    <div>
      Score : {{ row.score }}
    </div>
  </div>
</TransitionGroup>

 

트랜지션을 넣어서 순위 변화 애니메이션을 추가했다.

 

반응형
저작자표시 비영리 변경금지 (새창열림)
'프로젝트' 카테고리의 다른 글
  • [Project] 4dollar - 헥사고날 아키텍처에서 패키지 구조 전환
  • [Project] 4dollar - 경계간 매핑하기
덴마크초코우유
덴마크초코우유
IT, 알고리즘, 프로그래밍 언어, 자료구조 등 정리
    반응형
  • 덴마크초코우유
    이것저것끄적
    덴마크초코우유
  • 전체
    오늘
    어제
    • 분류 전체보기 (126)
      • Spring Framework (10)
        • Spring (5)
        • JPA (3)
        • Spring Security (0)
      • Language (52)
        • Java (12)
        • Python (10)
        • JavaScript (5)
        • NUXT (2)
        • C C++ (15)
        • PHP (8)
      • DB (16)
        • MySQL (10)
        • Reids (3)
        • Memcached (2)
      • 개발 (3)
      • 프로젝트 (3)
      • Book (2)
      • PS (15)
        • 기타 (2)
        • 백준 (2)
        • 프로그래머스 (10)
      • 딥러닝 (8)
        • CUDA (0)
        • Pytorch (0)
        • 모델 (0)
        • 컴퓨터 비전 (4)
        • OpenCV (1)
      • 기타 (16)
        • 디자인패턴 (2)
        • UnrealEngine (8)
        • ubuntu (1)
        • node.js (1)
        • 블로그 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    JavaScript
    게임 개발
    블루프린트
    게임
    C
    언리얼엔진4
    알고리즘
    딥러닝
    memcached
    Python
    Unreal
    C++
    파이썬
    mscoco
    웹
    pytorch
    map
    php
    프로그래머스
    MySQL
    클래스
    select
    자바
    redis
    JS
    NUXT
    Unreal Engine
    CPP
    FPS
    PS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
덴마크초코우유
리더보드 만들기 - 1
상단으로

티스토리툴바