当前位置:首页 > VUE

vue电影功能实现

2026-01-14 02:45:35VUE

Vue 电影功能实现

数据获取与展示

使用 Axios 或 Fetch API 从电影 API(如 TMDb、豆瓣 API)获取数据。在 Vue 的 createdmounted 生命周期钩子中发起请求,将返回的电影数据存储在组件的 data 属性中。

data() {
  return {
    movies: [],
    loading: false,
    error: null
  }
},
methods: {
  async fetchMovies() {
    this.loading = true;
    try {
      const response = await axios.get('https://api.themoviedb.org/3/movie/popular?api_key=YOUR_API_KEY');
      this.movies = response.data.results;
    } catch (err) {
      this.error = err.message;
    } finally {
      this.loading = false;
    }
  }
},
created() {
  this.fetchMovies();
}

电影列表渲染

使用 v-for 指令遍历电影数据,动态生成电影卡片。每张卡片包含电影海报、标题、评分等信息。

<template>
  <div class="movie-list">
    <div v-if="loading">Loading...</div>
    <div v-else-if="error">{{ error }}</div>
    <div v-else>
      <div v-for="movie in movies" :key="movie.id" class="movie-card">
        <img :src="`https://image.tmdb.org/t/p/w500${movie.poster_path}`" :alt="movie.title">
        <h3>{{ movie.title }}</h3>
        <p>Rating: {{ movie.vote_average }}</p>
      </div>
    </div>
  </div>
</template>

搜索功能

添加搜索输入框,使用 v-model 绑定搜索关键词。通过计算属性或方法过滤电影列表,实现实时搜索。

data() {
  return {
    searchQuery: ''
  }
},
computed: {
  filteredMovies() {
    return this.movies.filter(movie =>
      movie.title.toLowerCase().includes(this.searchQuery.toLowerCase())
    );
  }
}

电影详情页

使用 Vue Router 配置动态路由,点击电影卡片跳转到详情页。详情页根据路由参数获取电影 ID,并请求详细数据。

const router = new VueRouter({
  routes: [
    { path: '/movie/:id', component: MovieDetail }
  ]
});

分页功能

在数据请求中添加分页参数,使用分页组件控制当前页码。更新页码时重新获取数据。

methods: {
  async fetchMovies(page = 1) {
    const response = await axios.get(`https://api.themoviedb.org/3/movie/popular?api_key=YOUR_API_KEY&page=${page}`);
    this.movies = response.data.results;
  }
}

样式与布局

使用 CSS 或 UI 框架(如 Vuetify、Element UI)美化电影列表和详情页。确保响应式设计,适配不同屏幕尺寸。

.movie-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 20px;
}
.movie-card {
  border: 1px solid #ddd;
  padding: 10px;
  border-radius: 5px;
}

状态管理

对于复杂应用,使用 Vuex 管理电影数据、搜索状态和分页信息。通过 actions 发起异步请求,mutations 更新状态。

const store = new Vuex.Store({
  state: {
    movies: [],
    searchQuery: ''
  },
  mutations: {
    SET_MOVIES(state, movies) {
      state.movies = movies;
    }
  },
  actions: {
    async fetchMovies({ commit }, page) {
      const response = await axios.get(`https://api.themoviedb.org/3/movie/popular?api_key=YOUR_API_KEY&page=${page}`);
      commit('SET_MOVIES', response.data.results);
    }
  }
});

vue电影功能实现

标签: 功能电影
分享给朋友:

相关文章

vue实现功能插件

vue实现功能插件

Vue 插件实现方法 Vue 插件通常用于封装全局功能(如指令、过滤器、混入等),以下是实现 Vue 插件的典型方式: 插件基本结构 const MyPlugin = { instal…

vue实现ping功能

vue实现ping功能

实现Ping功能的思路 在Vue中实现Ping功能通常需要借助浏览器API或后端服务。由于浏览器环境限制,无法直接发送ICMP请求(传统Ping协议),但可通过以下两种方式模拟: HTTP请求模拟…

vue实现注册功能

vue实现注册功能

实现注册功能的基本步骤 在Vue中实现注册功能通常需要结合前端表单和后端API交互。以下是常见的实现方式: 创建注册表单组件 <template> <div class="r…

vue实现分页功能

vue实现分页功能

Vue 分页功能实现 在 Vue 中实现分页功能通常需要结合后端 API 或前端数据分页逻辑。以下是两种常见的实现方式: 前端分页实现 适用于数据量较小的情况,直接在 Vue 组件中处理分页逻辑…

vue实现桌面功能

vue实现桌面功能

Vue 实现桌面功能的方法 Vue.js 可以通过结合 Electron 或 NW.js 等框架实现桌面应用开发。以下是几种常见的方法: 使用 Vue 与 Electron 结合 Electron…

vue实现倍速播放功能

vue实现倍速播放功能

实现倍速播放功能的方法 在Vue中实现倍速播放功能通常涉及HTML5的<video>元素或第三方播放器库(如video.js)的API调用。以下是具体实现方式: 使用原生HTML5…