当前位置:首页 > VUE

vue实现选电影

2026-02-19 19:34:55VUE

Vue 实现电影选择功能

创建 Vue 项目

使用 Vue CLI 创建一个新项目,安装必要依赖。确保项目结构清晰,便于后续开发。

vue create movie-selector
cd movie-selector
npm install axios vue-router

设计数据结构

定义电影数据模型,包含电影名称、类型、评分、海报等信息。使用数组存储电影列表,方便后续筛选和展示。

movies: [
  {
    id: 1,
    title: "肖申克的救赎",
    genre: "剧情",
    rating: 9.7,
    poster: "https://example.com/poster1.jpg"
  },
  {
    id: 2,
    title: "阿甘正传",
    genre: "剧情",
    rating: 9.5,
    poster: "https://example.com/poster2.jpg"
  }
]

实现电影列表展示

创建 MovieList 组件,使用 v-for 指令循环渲染电影卡片。每个卡片显示电影基本信息,并添加选择按钮。

<template>
  <div class="movie-list">
    <div v-for="movie in movies" :key="movie.id" class="movie-card">
      <img :src="movie.poster" :alt="movie.title">
      <h3>{{ movie.title }}</h3>
      <p>类型: {{ movie.genre }}</p>
      <p>评分: {{ movie.rating }}</p>
      <button @click="selectMovie(movie)">选择</button>
    </div>
  </div>
</template>

添加筛选功能

实现按类型、评分等条件筛选电影。使用计算属性动态过滤电影列表,保持响应式更新。

computed: {
  filteredMovies() {
    return this.movies.filter(movie => {
      return (
        movie.genre.includes(this.selectedGenre) &&
        movie.rating >= this.minRating
      )
    })
  }
}

实现选择逻辑

在选择电影时触发事件,更新选中状态或跳转到详情页。使用 Vue Router 管理页面导航。

methods: {
  selectMovie(movie) {
    this.$router.push({ name: 'MovieDetail', params: { id: movie.id } })
  }
}

添加电影详情页

创建 MovieDetail 组件展示选中电影的详细信息。从路由参数获取电影ID,匹配对应数据。

created() {
  const movieId = parseInt(this.$route.params.id)
  this.movie = this.movies.find(m => m.id === movieId)
}

样式优化

使用 CSS 或 UI 框架美化界面,确保响应式布局。添加过渡动画提升用户体验。

.movie-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 20px;
}

.movie-card {
  transition: transform 0.3s;
}

.movie-card:hover {
  transform: scale(1.05);
}

数据持久化

考虑使用 Vuex 管理全局状态,或通过 API 获取真实电影数据。实现本地存储保存用户选择记录。

import axios from 'axios'

async fetchMovies() {
  try {
    const response = await axios.get('https://api.example.com/movies')
    this.movies = response.data
  } catch (error) {
    console.error('获取电影数据失败:', error)
  }
}

测试与部署

编写单元测试验证核心功能,使用 Jest 等测试框架。构建生产版本并部署到服务器或静态托管平台。

vue实现选电影

npm run build

标签: 电影vue
分享给朋友:

相关文章

vue实现tab切换

vue实现tab切换

Vue实现Tab切换的方法 使用v-if和v-show指令 通过v-if或v-show控制不同tab内容的显示与隐藏。v-if会销毁和重建DOM,适合切换频率低的场景;v-show仅切换CSS的dis…

vue实现安全免登录

vue实现安全免登录

Vue 实现安全免登录的方案 免登录功能通常通过持久化认证状态(如 Token)实现,但需兼顾安全性。以下是基于 Vue 的常见实现方案: 基于 Token 的免登录 登录成功后存储 Token…

vue实现toggle

vue实现toggle

Vue 实现 Toggle 功能 在 Vue 中实现 toggle(切换)功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 和 v-on 通过 v-model 绑定数据,结合…

vue 实现视频

vue 实现视频

Vue 实现视频播放功能 使用 Vue 实现视频播放功能可以通过 HTML5 的 <video> 标签或第三方库(如 video.js)来实现。以下是两种常见的方法: 使用 HTML5…

vue实现popup

vue实现popup

Vue 实现 Popup 弹窗 使用 Vue 原生组件 创建一个基本的 Vue 组件作为弹窗,通过 v-if 或 v-show 控制显示隐藏。 <template> <div&…

vue 实现轮播

vue 实现轮播

Vue 实现轮播的方法 使用第三方库(如 Swiper) 安装 Swiper 库: npm install swiper 在 Vue 组件中引入 Swiper: <template>…