当前位置:首页 > VUE

vue 实现豆瓣

2026-01-12 10:44:23VUE

Vue 实现豆瓣应用

使用 Vue 实现一个豆瓣应用需要整合多个功能模块,包括电影列表、详情页、搜索和用户交互。以下是关键实现步骤:

项目初始化

使用 Vue CLI 创建项目:

vue create douban-app

安装必要依赖:

npm install axios vue-router vuex

数据获取

通过豆瓣 API 获取数据(需注意跨域问题,建议使用代理或第三方封装接口):

// api.js
import axios from 'axios'

export const getMovieList = (params) => {
  return axios.get('/v2/movie/in_theaters', { params })
}

路由配置

设置基本路由结构:

// router.js
import Vue from 'vue'
import Router from 'vue-router'
import MovieList from './views/MovieList.vue'
import MovieDetail from './views/MovieDetail.vue'

Vue.use(Router)

export default new Router({
  routes: [
    { path: '/', component: MovieList },
    { path: '/movie/:id', component: MovieDetail }
  ]
})

状态管理

使用 Vuex 管理全局状态:

// store.js
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    movies: []
  },
  mutations: {
    setMovies(state, payload) {
      state.movies = payload
    }
  },
  actions: {
    async fetchMovies({ commit }) {
      const res = await getMovieList()
      commit('setMovies', res.data.subjects)
    }
  }
})

电影列表组件

实现基本的电影列表展示:

<template>
  <div class="movie-list">
    <div v-for="movie in movies" :key="movie.id" class="movie-item">
      <router-link :to="'/movie/' + movie.id">
        <img :src="movie.images.small" :alt="movie.title">
        <h3>{{ movie.title }}</h3>
      </router-link>
    </div>
  </div>
</template>

<script>
export default {
  computed: {
    movies() {
      return this.$store.state.movies
    }
  },
  created() {
    this.$store.dispatch('fetchMovies')
  }
}
</script>

电影详情组件

展示单个电影的详细信息:

<template>
  <div v-if="movie" class="movie-detail">
    <img :src="movie.images.large" :alt="movie.title">
    <h1>{{ movie.title }}</h1>
    <p>{{ movie.summary }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      movie: null
    }
  },
  async created() {
    const res = await getMovieDetail(this.$route.params.id)
    this.movie = res.data
  }
}
</script>

样式处理

使用 CSS 或预处理器美化界面:

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

.movie-item img {
  width: 100%;
  height: auto;
}

注意事项

  1. 豆瓣 API 有访问频率限制,建议添加 loading 状态和错误处理
  2. 生产环境需要处理跨域问题,可通过后端代理或使用 CORS 解决方案
  3. 移动端适配需要考虑响应式布局
  4. 可添加收藏功能,使用 localStorage 存储用户数据

以上实现提供了豆瓣应用的核心功能框架,可根据需求进一步扩展评分系统、评论功能等模块。

vue 实现豆瓣

标签: 豆瓣vue
分享给朋友:

相关文章

vue 实现手册

vue 实现手册

以下是关于 Vue.js 实现手册的整理内容,涵盖核心概念、实践方法和常见场景的解决方案: 核心概念与基础用法 Vue.js 是一个渐进式 JavaScript 框架,核心特点包括数据驱动视图和组件…

vue实现压缩上传文件

vue实现压缩上传文件

压缩上传文件的实现方法 在Vue中实现文件压缩和上传功能,可以通过以下步骤完成。该方法结合了前端文件压缩库和HTTP请求,确保文件在上传前被有效压缩。 安装必要的依赖 需要使用compressor…

vue实现点击页面切换

vue实现点击页面切换

实现点击页面切换功能 在Vue中实现点击页面切换功能,可以通过路由跳转或组件动态渲染两种方式完成。以下是具体实现方法: 使用Vue Router实现页面跳转 安装Vue Router后,在项目中配置…

vue实现导航切换内容

vue实现导航切换内容

Vue实现导航切换内容的方法 在Vue中实现导航切换内容,可以通过以下方式实现: 使用动态组件 动态组件通过<component :is="currentComponent">实现内容…

vue登录业务的实现

vue登录业务的实现

实现登录业务的基本流程 在Vue中实现登录业务通常涉及前端界面设计、表单验证、API请求交互、状态管理以及路由控制等环节。以下是核心实现步骤: 登录表单设计与验证 创建包含用户名和密码输入框的登录组…

vue 实现简单登陆

vue 实现简单登陆

以下是一个使用 Vue 3 实现的简单登录功能示例,包含表单验证和基础交互逻辑: 创建 Vue 组件 <template> <div class="login-contain…