테이크아웃을 위한 좋은 리뷰

HTMLBeginner
지금 연습하기

소개

이 프로젝트에서는 Vue.js 와 Element-UI 라이브러리를 사용하여 다차원 평점 컴포넌트를 만드는 방법을 배우게 됩니다. 이 평점 컴포넌트를 통해 사용자는 배달 속도, 음식 맛, 포장 품질 등 테이크아웃 주문의 다양한 측면에 대해 평가할 수 있습니다.

👀 미리보기

다차원 평점 컴포넌트 데모

🎯 과제

이 프로젝트에서 다음을 배우게 됩니다:

  • 다차원 평점 기능을 처리하기 위해 my-rate.vue라는 사용자 정의 Vue.js 컴포넌트를 만드는 방법.
  • 개별 평점 차원을 구현하기 위해 Element-UI 라이브러리의 el-rate 컴포넌트를 사용하는 방법.
  • 평점이 업데이트될 때 상위 컴포넌트에 알리기 위해 my-rate 컴포넌트에서 change 이벤트를 발생시키는 방법.
  • 디자인 요구 사항에 맞게 평점 컴포넌트의 스타일과 레이아웃을 사용자 정의하는 방법.

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • 사용자 정의 기능을 갖춘 재사용 가능한 Vue.js 컴포넌트를 만들 수 있습니다.
  • Element-UI 라이브러리를 사용하여 복잡한 UI 컴포넌트를 구축할 수 있습니다.
  • Vue.js 애플리케이션에서 부모 및 자식 컴포넌트 간에 데이터를 관리하고 통신할 수 있습니다.
  • CSS 를 사용하여 Vue.js 컴포넌트의 스타일과 레이아웃을 지정할 수 있습니다.

프로젝트 구조 설정

이 단계에서는 프로젝트 파일과 구조를 설정합니다. 이 단계를 완료하려면 아래 단계를 따르세요:

프로젝트 폴더를 엽니다. 디렉토리 구조는 다음과 같습니다:

├── element-ui-2.6.2
│   ├── element-icons.ttf
│   ├── element-icons.woff
│   ├── element-ui.min.js
│   └── element-ui.style.css
├── index.html
├── js
│   ├── http-vue-loader.js
│   └── vue.min.js
└──  my-rate.vue

그 중:

  • index.html은 메인 페이지입니다.
  • element-ui-2.6.2 폴더에는 element-ui 라이브러리와 관련된 스크립트 파일, 스타일 파일 및 글꼴이 포함되어 있습니다.
  • js 폴더에는 vue 및 http-vue-loader 라이브러리와 관련된 파일이 포함되어 있습니다.
  • my-rate.vue는 캡슐화된 평점 컴포넌트의 파일입니다.

WebIDE 의 오른쪽 하단 모서리에 있는 Go Live 버튼을 클릭하여 프로젝트를 실행합니다.

다음으로, VM 상단의 "Web 8080"을 열고 수동으로 새로 고치면 페이지를 볼 수 있습니다.

My-Rate 컴포넌트 완성

이 단계에서는 다차원 평점 기능을 구현하기 위해 my-rate.vue 컴포넌트를 완성합니다.

  1. 프로젝트 폴더에서 my-rate.vue 파일을 엽니다.
  2. template 섹션에서 평점 컴포넌트의 HTML 구조를 추가합니다:
<div class="block">
  <span class="demonstration">테이크아웃을 평가해주세요: </span>
  <ul class="rate-list">
    <li>
      <!-- TODO: el-rate 속성 완성 -->
      배달 속도:
      <el-rate v-model="speed" show-score @change="changeHandler"></el-rate>
    </li>
    <li>
      <!-- TODO: el-rate 속성 완성 -->
      테이크아웃 맛:
      <el-rate v-model="flavor" show-score @change="changeHandler"></el-rate>
    </li>
    <li>
      <!-- TODO: el-rate 속성 완성 -->
      테이크아웃 포장:<el-rate
        v-model="pack"
        show-score
        @change="changeHandler"
      ></el-rate>
    </li>
  </ul>
</div>

이 구조는 각 평점 차원 (속도, 맛, 포장) 에 대해 하나의 el-rate 컴포넌트를 포함합니다.

  1. <script> 섹션에서 changeHandler 메서드를 추가합니다:
<script>
module.exports = {
  data() {
    return {
      speed: 0,
      flavor: 0,
      pack: 0
    };
  },
  /* TODO */
  methods: {
    changeHandler() {
      if (this.speed && this.flavor && this.pack) {
        const rate = {
          speed: this.speed,
          flavor: this.flavor,
          pack: this.pack
        };
        this.$emit("change", rate);
      }
    }
  }
};
</script>

data 함수는 각 차원의 현재 평점 값을 저장하는 speed, flavor, pack의 세 가지 속성을 가진 객체를 반환합니다.

changeHandler 메서드는 모든 차원의 평점이 변경될 때 호출됩니다. 세 가지 평점이 모두 설정되었는지 확인하고, 설정된 경우 업데이트된 평점 값을 포함하는 객체와 함께 change 이벤트를 발생시킵니다.

  1. my-rate.vue 파일을 저장합니다.
  2. 브라우저로 돌아가 페이지를 새로 고칩니다. 완성된 인터페이스는 그림과 같습니다:

완성된 평점 컴포넌트 인터페이스

요약

축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.

✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습