当前位置:首页 > 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 系统实现步骤 项目初始化与配置 使用 Vue CLI 或 Vite 创建项目: npm init vue@latest my-system 选择需要的配置(Router、Pinia 等)。…

vue 实现pc

vue 实现pc

Vue 实现 PC 端应用的核心要点 Vue.js 是一个渐进式框架,适合构建 PC 端单页应用(SPA)或复杂的前端界面。以下是实现 PC 端应用的关键方法和注意事项: 项目初始化与工程化配置…

vue实现div

vue实现div

Vue 实现 DIV 元素的方法 在 Vue 中实现 DIV 元素可以通过多种方式,以下是几种常见的实现方法: 使用模板语法 在 Vue 的模板中直接使用 HTML 的 <div> 标签…

jquery实现vue

jquery实现vue

jQuery 和 Vue.js 是两种不同理念的前端工具,jQuery 以 DOM 操作和事件驱动为核心,而 Vue.js 是数据驱动的现代化框架。如果想用 jQuery 实现类似 Vue 的功能(如…

vue 实现单选

vue 实现单选

使用 v-model 绑定单选值 在 Vue 中,可以通过 v-model 绑定单选按钮的值。定义一个响应式数据(如 selectedOption),并将其与单选按钮的 value 属性关联。…

vue 实现轮播

vue 实现轮播

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