当前位置:首页 > 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>

添加筛选功能

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

vue实现选电影

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,匹配对应数据。

vue实现选电影

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 等测试框架。构建生产版本并部署到服务器或静态托管平台。

npm run build

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

相关文章

vue实现按钮组轮换

vue实现按钮组轮换

实现按钮组轮换的方法 在Vue中实现按钮组轮换效果可以通过动态绑定类和事件处理来完成。以下是一种常见的实现方式: 模板部分 <template> <div class="…

vue实现视窗

vue实现视窗

Vue 实现视窗功能 在 Vue 中实现视窗功能通常涉及监听浏览器窗口大小变化、响应式布局或创建自定义弹窗组件。以下是几种常见实现方式: 监听浏览器窗口大小变化 使用 Vue 的 mounted…

vue 实现复选

vue 实现复选

Vue 实现复选功能 在 Vue 中实现复选功能可以通过多种方式完成,以下是常见的几种方法: 使用 v-model 绑定数组 通过 v-model 绑定一个数组,可以自动收集用户选择的复选框值。…

vue 实现jqslidedown

vue 实现jqslidedown

在 Vue 中实现类似 jQuery 的 slideDown 效果,可以通过 Vue 的过渡系统或 CSS 动画结合动态样式绑定来实现。以下是几种实现方式: 使用 Vue Transition…

vue实现iframe

vue实现iframe

Vue 中实现 iframe 的方法 在 Vue 项目中,可以通过多种方式实现 iframe 的嵌入。以下是几种常见的方法: 使用原生 HTML iframe 标签 直接在 Vue 组件的模板中使用…

vue实现slider

vue实现slider

Vue 实现 Slider 组件 使用 Vue 实现 Slider 组件可以通过原生开发或借助第三方库。以下是两种常见方法: 原生实现 Slider 创建一个基础的 Slider 组件,通过 v-…