Maison  >  Article  >  interface Web  >  Comment utiliser Vue pour implémenter une conception de page similaire à la page d'accueil de Tmall ?

Comment utiliser Vue pour implémenter une conception de page similaire à la page d'accueil de Tmall ?

王林
王林original
2023-06-25 11:21:14502parcourir

Avec le développement rapide de Vue, son utilisation dans le développement Web devient un choix de plus en plus courant. Vue est un framework frontal populaire qui utilise une approche de développement basée sur les composants, ce qui simplifie grandement le processus de développement. En tant que l’un des plus grands sites de commerce électronique en Chine, le style de conception de la page d’accueil de Tmall a toujours attiré beaucoup d’attention. Ainsi, dans cet article, nous utiliserons Vue pour implémenter une conception de page similaire à la page d'accueil de Tmall. Voici le plan de mise en œuvre spécifique :

  1. Créer un projet Vue

Tout d'abord, nous devons créer un projet Vue. Si vous savez déjà comment créer un projet Vue, vous pouvez ignorer cette étape. Sinon, vous pouvez créer un nouveau projet Vue en suivant ces étapes :

  • Installez Vue-cli si vous ne l'avez pas déjà installé. Entrez la commande suivante sur la ligne de commande :

npm install -g @vue/cli

  • Créez un nouveau projet Vue. Entrez la commande suivante dans la ligne de commande :

vue create myproject

  • Choisissez un préréglage et sélectionnez-le en fonction de vos besoins.
  • Installez Vue-router et Axios. Entrez la commande suivante dans la ligne de commande :

npm install vue-router axios

  1. Conception de la mise en page

La conception de la page d'accueil de Tmall est tout à fait unique. Il divise la page en plusieurs zones, notamment la navigation supérieure, le carrousel, la classification des produits, les recommandations de marques, les produits les plus vendus, les lancements de nouveaux produits, etc. Nous pouvons utiliser Vue pour implémenter une telle mise en page.

Tout d'abord, nous devons créer un composant de mise en page dans Vue, nommé AppLayout.vue. Dans ce composant, nous pouvons utiliser HTML et CSS pour implémenter la mise en page de la page d'accueil de Tmall. Voici un exemple simple :

<template>
  <div class="app-layout">
    <header>顶部导航</header>
    <div class="carousel">轮播图</div>
    <nav class="nav">商品分类</nav>
    <section class="brand">品牌推荐</section>
    <section class="hot">热卖商品</section>
    <section class="new">新品上市</section>
  </div>
</template>

<style>
.app-layout {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.carousel, .nav, .brand, .hot, .new {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
}

.carousel {
  height: 300px;
  background-color: #ddd;
}

.nav {
  height: 50px;
  background-color: #f9f9f9;
}

.brand, .hot, .new {
  padding: 20px 0;
  background-color: #f2f2f2;
}
</style>

Dans ce composant de mise en page, nous utilisons la mise en page flexible pour diviser la page en plusieurs zones, notamment la navigation supérieure, le carrousel, la classification des produits, les recommandations de marques, les produits les plus vendus, les nouveaux produits, etc. Ce composant de mise en page agit comme un conteneur pour l'ensemble de l'application, contenant tous les autres composants de page.

  1. Composant de carrousel de conception

Le carrousel est l'un des éléments les plus importants de la page d'accueil de Tmall. Il présente une sélection de produits et d'événements. Nous pouvons utiliser des plug-ins tiers pour implémenter des carrousels.

Tout d'abord, nous devons installer et introduire un plug-in de carrousel Vue. Entrez la commande suivante sur la ligne de commande :

npm install vue-awesome-swiper

Ensuite, créez un composant carrousel dans Vue et nommez-le Carousel.vue. Dans ce composant, nous pouvons utiliser des plug-ins tiers pour implémenter des carrousels. Voici un exemple simple :

<template>
  <div class="carousel">
    <swiper :options="swiperOption">
      <swiper-slide v-for="item in items" :key="item.id">
        <img :src="item.image" alt="">
      </swiper-slide>
      <div class="swiper-pagination" slot="pagination"></div>
    </swiper>
  </div>
</template>

<script>
import { Swiper, SwiperSlide, Pagination } from 'swiper/vue';
import 'swiper/swiper-bundle.css';

export default {
  components: {
    Swiper,
    SwiperSlide,
    Pagination,
  },
  data() {
    return {
      items: [
        { id: 1, image: 'https://picsum.photos/id/100/300/200' },
        { id: 2, image: 'https://picsum.photos/id/200/300/200' },
        { id: 3, image: 'https://picsum.photos/id/300/300/200' },
      ],
      swiperOption: {
        pagination: {
          el: '.swiper-pagination',
        },
        loop: true,
        autoplay: {
          delay: 3000,
        },
      },
    };
  },
};
</script>

<style scoped>
.carousel {
  margin-bottom: 20px;
}

.swiper-pagination {
  position: absolute;
  bottom: 10px;
  text-align: center;
  width: 100%;
}
</style>

Dans ce composant carrousel, nous utilisons le plug-in carrousel de Vue et personnalisons les paramètres du carrousel via l'attribut options. Nous pouvons également contrôler le comportement de l'image du carrousel en appelant l'API, comme passer à l'image suivante et configurer la lecture en boucle, la lecture automatique, etc.

  1. Composant de classification des produits de conception

Les catégories de produits de Tmall sont très riches, notamment les vêtements, les meubles, les produits électroniques, etc. Nous pouvons utiliser Vue pour afficher ces catégories de produits.

Tout d'abord, nous devons créer un composant de classification de produits dans Vue, nommé ProductList.vue. Dans ce composant, nous pouvons utiliser la liaison de données de Vue pour afficher la liste des produits et utiliser CSS pour embellir la page. Voici un exemple simple :

<template>
  <div class="product-list">
    <h2>{{ title }}</h2>
    <ul>
      <li v-for="item in items" :key="item.id">
        <a :href="item.link">
          <img :src="item.image" alt="">
          <span>{{ item.name }}</span>
        </a>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  props: ['title', 'items'],
};
</script>

<style scoped>
.product-list {
  margin-bottom: 20px;
}

.product-list ul {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  padding: 0;
  margin: 0;
}

.product-list li {
  width: calc(50% - 10px);
  margin-bottom: 20px;
  background-color: #fff;
  border: 1px solid #ddd;
}

.product-list a {
  display: block;
  text-align: center;
}

.product-list img {
  display: block;
  width: 100%;
  height: auto;
}

.product-list span {
  display: block;
  padding: 10px;
  font-size: 14px;
}
</style>

Dans ce composant de classification de produits, nous utilisons la liaison de données de Vue pour afficher la liste des produits. Nous pouvons transmettre le nom, l'image, le lien et d'autres informations de chaque produit via l'attribut props. Nous pouvons également utiliser la mise en page Flexbox et les styles CSS pour embellir l'affichage des listes de produits.

  1. Composant de recommandation de marque de conception

La recommandation de marque est un autre élément important de la page d'accueil de Tmall. Il présente des articles de marques connues. Nous pouvons utiliser Vue pour afficher ces marques.

Tout d'abord, nous devons créer un composant de recommandation de marque dans Vue, nommé BrandSlider.vue. Dans ce composant, nous pouvons utiliser le plug-in carrousel et les effets d'animation de Vue pour afficher la marque. Voici un exemple simple :

<template>
  <div class="brand-slider">
    <h2>品牌推荐</h2>
    <swiper :options="swiperOption">
      <swiper-slide v-for="item in items" :key="item.id">
        <div class="item">
          <img :src="item.image" alt="">
          <div class="overlay"></div>
          <div class="info">{{ item.name }}</div>
        </div>
      </swiper-slide>
    </swiper>
  </div>
</template>

<script>
import SwiperCore, { Autoplay } from 'swiper';
import { Swiper, SwiperSlide } from 'swiper/vue';
import 'swiper/swiper-bundle.css';
import './BrandSlider.css';

SwiperCore.use([Autoplay]);

export default {
  components: {
    Swiper,
    SwiperSlide,
  },
  data() {
    return {
      items: [
        { id: 1, image: 'https://picsum.photos/id/400/200/200', name: '品牌 1' },
        { id: 2, image: 'https://picsum.photos/id/500/200/200', name: '品牌 2' },
        { id: 3, image: 'https://picsum.photos/id/600/200/200', name: '品牌 3' },
        { id: 4, image: 'https://picsum.photos/id/700/200/200', name: '品牌 4' },
        { id: 5, image: 'https://picsum.photos/id/800/200/200', name: '品牌 5' },
      ],
      swiperOption: {
        autoplay: {
          delay: 3000,
        },
        loop: true,
        slidesPerView: 4,
        spaceBetween: 30,
      },
    };
  },
};
</script>

Dans ce composant de recommandation de marque, nous utilisons le plug-in carrousel et les effets d'animation de Vue pour afficher la marque. On peut appeler CSS pour embellir le style.

  1. Concevoir des composants de produits les plus vendus

Les produits les plus vendus sont un autre élément important de la page d'accueil de Tmall. Il présente certains des articles les plus vendus. Nous pouvons utiliser Vue pour afficher ces produits les plus vendus.

Tout d'abord, nous devons créer un composant de produit chaud dans Vue, nommé HotList.vue. Dans ce composant, nous pouvons utiliser la liaison de données de Vue pour implémenter l'affichage du produit et CSS pour embellir la page. Voici un exemple simple :

<template>
  <div class="hot-list">
    <h2>热卖商品</h2>
    <ul>
      <li v-for="item in items" :key="item.id">
        <a :href="item.link">
          <img :src="item.image" alt="">
          <span class="name">{{ item.name }}</span>
          <span class="price">{{ item.price }}</span>
        </a>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  props: ['items'],
};
</script>

<style scoped>
.hot-list {
  margin-bottom: 20px;
}

.hot-list ul {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  padding: 0;
  margin: 0;
}

.hot-list li {
  width: calc(33.33% - 10px);
  margin-bottom: 20px;
  background-color: #fff;
  border: 1px solid #ddd;
}

.hot-list a {
  display: block;
  text-align: center;
}

.hot-list img {
  display: block;
  width: 100%;
  height: auto;
}

.hot-list .name {
  display: block;
  padding: 10px;
  font-size: 14px;
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
}

.hot-list .price {
  display: block;
  padding: 10px;
  color: #f40;
}
</style>

Dans ce composant de produit très vendu, nous utilisons la liaison de données de Vue pour afficher la liste des produits les plus vendus. Nous pouvons transmettre des informations telles que le nom, l'image, le prix et le lien de chaque produit via l'attribut props. Nous pouvons également utiliser la mise en page Flexbox et les styles CSS pour embellir l'affichage de la liste des produits les plus vendus.

  1. 设计新品上市组件

新品上市是天猫首页的另一个重要元素。它展示了一些新推出的商品。我们可以使用 Vue 来实现这些新品的展示。

首先,我们需要在 Vue 中创建一个新品上市组件,命名为 NewList.vue。在这个组件中,我们可以使用 Vue 的数据绑定来实现商品展示,使用 CSS 来美化页面。下面是一个简单的示例:

<template>
  <div class="new-list">
    <h2>新品上市</h2>
    <ul>
      <li v-for="item in items" :key="item.id">
        <a :href="item.link">
          <img :src="item.image" alt="">
          <span class="name">{{ item.name }}</span>
          <span class="price">{{ item.price }}</span>
        </a>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  props: ['items'],
};
</script>

<style scoped>
.new-list {
  margin-bottom: 20px;
}

.new-list ul {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  padding: 0;
  margin: 0;
}

.new-list li {
  width: calc(33.33% - 10px);
  margin-bottom: 20px;
  background-color: #fff;
  border: 1px solid #ddd;
}

.new-list a {
  display: block;
  text-align: center;
}

.new-list img {
  display: block;
  width: 100%;
  height: auto;
}

.new-list .name {
  display: block;
  padding: 10px;
  font-size: 14px;
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
}

.new-list .price {
  display: block;
  padding: 10px;
  color: #f40;
}
</style>

在这个新品上市组件中,我们使用了 Vue 的数据绑定来实现新品列表的展示。我们可以通过 props 属性来传递每个商品的名称、图片、价格和链接等信息。我们也可以使用 Flexbox 布局和 CSS 样式来美化新品列表的展示效果。

  1. 创建 Vue-router

最后,我们需要创建 Vue-router 来实现页面路由的功能。在 Vue-router 中,我们需要为每个页面组件创建一个路由,并为每个路由指定一个 URL。我们可以将所有组件的路由都放在一个单独的文件中,命名为 router.js。下面是一个简单的示例:

import Vue from 'vue';
import VueRouter from 'vue-router';

import AppLayout from './components/AppLayout.vue';
import Carousel from './components/Carousel.vue';
import ProductList from './components/ProductList.vue';
import BrandSlider from './components/BrandSlider.vue';
import HotList from './components/HotList.vue';
import NewList from './components/NewList.vue';

Vue.use(VueRouter);

const routes = [
  { path: '/', component: AppLayout },
  { path: '/carousel', component: Carousel },
  { path: '/product-list', component: ProductList },
  { path: '/brand-slider', component: BrandSlider },
  { path: '/hot-list', component: HotList },
  { path: '/new-list', component: NewList },
];

export default new VueRouter({
  routes,
});

在这个文件中,我们为每个页面组件创建了一个路由,并为每个路由指定了一个 URL。在最后一行中,我们使用了 export default 来导出整个 VueRouter。

  1. 整合所有组件

现在,我们已经完成了所有页面组件和路由组件的创建。最后,我们需要将它们整合在一起,形成一个完整的 Vue 应用。在主要的 Vue 实例中,我们需要引入所有组件和路由组件,以及用 created 钩子函数来初始化我们的数据。下面是一个简单的示例:

<template>
  <div id="app">
    <router-link to="/">首页</router-link>
    <router-link to="/carousel">轮播图</router-link>
    <router-link to="/product-list">商品分类</router-link>
    <router-link to="/brand-slider">品牌推荐</router-link>
    <router-link to="/hot-list">热卖商品</router-link>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn