当前位置:首页 > VUE

vue实现得猫眼

2026-01-19 13:16:21VUE

Vue 实现猫眼电影功能

Vue 可以用来实现类似猫眼电影的功能,包括电影列表展示、详情页、购票功能等。以下是实现的关键步骤和技术要点。

项目初始化

使用 Vue CLI 或 Vite 初始化项目,安装必要的依赖:

npm create vue@latest maoyan-app
cd maoyan-app
npm install axios vue-router pinia

路由配置

src/router/index.js 中配置路由:

import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
import MovieDetail from '../views/MovieDetail.vue'

const routes = [
  { path: '/', component: Home },
  { path: '/movie/:id', component: MovieDetail }
]

const router = createRouter({
  history: createWebHistory(),
  routes
})

export default router

状态管理

使用 Pinia 管理全局状态,创建 src/stores/movie.js

vue实现得猫眼

import { defineStore } from 'pinia'
import { ref } from 'vue'
import axios from 'axios'

export const useMovieStore = defineStore('movie', () => {
  const movies = ref([])

  async function fetchMovies() {
    const res = await axios.get('https://api.example.com/movies')
    movies.value = res.data
  }

  return { movies, fetchMovies }
})

电影列表组件

创建 src/components/MovieList.vue

<template>
  <div class="movie-list">
    <div v-for="movie in movies" :key="movie.id" class="movie-item">
      <img :src="movie.poster" :alt="movie.title">
      <h3>{{ movie.title }}</h3>
      <p>评分:{{ movie.rating }}</p>
    </div>
  </div>
</template>

<script setup>
import { useMovieStore } from '../stores/movie'
import { onMounted } from 'vue'

const store = useMovieStore()
const { movies } = store

onMounted(() => {
  store.fetchMovies()
})
</script>

电影详情页

创建 src/views/MovieDetail.vue

<template>
  <div v-if="movie">
    <h1>{{ movie.title }}</h1>
    <img :src="movie.poster" class="detail-poster">
    <p>导演:{{ movie.director }}</p>
    <p>主演:{{ movie.cast }}</p>
    <p>评分:{{ movie.rating }}</p>
    <button @click="showCinemas">立即购票</button>
  </div>
</template>

<script setup>
import { ref } from 'vue'
import { useRoute } from 'vue-router'
import axios from 'axios'

const route = useRoute()
const movie = ref(null)

axios.get(`https://api.example.com/movies/${route.params.id}`)
  .then(res => {
    movie.value = res.data
  })
</script>

API 请求封装

创建 src/api/movie.js 封装 API 请求:

vue实现得猫眼

import axios from 'axios'

const instance = axios.create({
  baseURL: 'https://api.example.com',
  timeout: 5000
})

export const getMovies = () => instance.get('/movies')
export const getMovieById = id => instance.get(`/movies/${id}`)

样式设计

使用 CSS 或 UI 库(如 Element Plus)美化界面:

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

.detail-poster {
  max-width: 300px;
  border-radius: 8px;
}

部署上线

构建项目并部署到服务器:

npm run build

将生成的 dist 文件夹内容上传到 Web 服务器或使用 Vercel、Netlify 等平台部署。

通过以上步骤,可以构建一个基本的猫眼电影类应用。实际开发中需要对接真实的数据接口,并添加更多功能如影院选择、座位选择、支付等。

标签: 猫眼vue
分享给朋友:

相关文章

vue实现图集

vue实现图集

Vue 实现图集的方法 在 Vue 中实现图集功能可以通过多种方式完成,以下是一些常见的方法和实现步骤。 使用第三方库(如 vue-image-lightbox) 安装 vue-image-ligh…

vue实现详情

vue实现详情

Vue 实现详情页的常见方法 使用动态路由 在 Vue Router 中配置动态路由参数,通过 $route.params 获取详情 ID。示例路由配置: { path: '/detail/:i…

vue实现双向

vue实现双向

Vue 实现双向绑定的方法 Vue 的双向绑定主要通过 v-model 指令实现,它结合了数据绑定和事件监听,适用于表单元素(如 input、select、textarea 等)。以下是几种常见的实现…

vue实现导入

vue实现导入

Vue 实现文件导入功能 使用 <input type="file"> 元素 在 Vue 模板中添加一个文件输入元素,绑定 change 事件处理函数。 <template>…

vue app 实现

vue app 实现

Vue App 实现步骤 创建Vue项目 使用Vue CLI或Vite初始化项目。Vue CLI适合传统项目,Vite适合现代轻量级应用。 npm create vue@latest my-vu…

vue 实现hover

vue 实现hover

Vue 实现 Hover 效果的方法 在 Vue 中实现 hover 效果可以通过多种方式完成,以下是几种常见的方法: 使用 CSS 伪类 :hover 最简单的方式是直接使用 CSS 的 :hov…