Heim  >  Artikel  >  Web-Frontend  >  Wie implementiert man mit Vue eine Meituan-ähnliche Catering-Bestellseite?

Wie implementiert man mit Vue eine Meituan-ähnliche Catering-Bestellseite?

王林
王林Original
2023-06-25 18:43:531738Durchsuche

Vue.js ist ein beliebtes JavaScript-Framework, das häufig zum Erstellen von Einzelseitenanwendungen verwendet wird. Meituan ist eine bekannte Catering-Bestellplattform. Das Seitendesign ist einfach und praktisch und die Benutzererfahrung ist gut. In diesem Artikel wird erläutert, wie Sie mit Vue eine Meituan-ähnliche Catering-Bestellseite implementieren.

  1. Erstellen Sie ein Vue-Projekt

Zunächst müssen Sie das Gerüstbau-Tool Vue CLI von Vue installieren. Zur Installation können Sie den folgenden Befehl verwenden:

npm install -g @vue/cli

Nach der Installation können Sie mit dem folgenden Befehl ein neues Vue-Projekt erstellen:

vue create vue-meituan

Geben Sie nach dem Erstellen des Projekts das Projektverzeichnis ein und starten Sie den Entwicklungsserver:

cd vue-meituan
npm run serve

Öffnen http im Browser ://localhost:8080 können Sie die Standard-Willkommensseite von Vue sehen.

  1. Seitenlayout entwerfen

Bevor Sie eine Catering-Bestellseite im Meituan-Stil implementieren, müssen Sie zunächst das Layout und den Stil der Seite entwerfen. Sie können die Seite mit Werkzeugen wie Photoshop oder Sketch skizzieren, um Informationen wie die Position und das Aussehen jeder Komponente auf der Seite zu bestimmen.

Um den Prozess hier zu vereinfachen, verwenden wir direkt die bereits gestaltete Seite, die eine obere Navigationsleiste, eine Produktliste und eine untere Menüleiste enthält. Die Hauptstruktur der Seite ist wie folgt:

<template>
  <div class="app">
    <!-- 导航栏 -->
    <div class="nav-bar">
      <!-- ... -->
    </div>
    <!-- 商品列表 -->
    <div class="product-list">
      <!-- ... -->
    </div>
    <!-- 菜单栏 -->
    <div class="menu-bar">
      <!-- ... -->
    </div>
  </div>
</template>

<style>
  /* 样式 */
</style>
  1. Implementieren Sie die Navigationsleistenkomponente.

Die Navigationsleistenkomponente besteht aus Logo, Suchfeld und Navigationsmenü. Diese Komponente kann mit der Vue-Komponente implementiert werden:

<template>
  <div class="nav-bar">
    <!-- logo -->
    <div class="logo">
      <img src="logo.png" alt="美团">
    </div>
    <!-- 搜索框 -->
    <div class="search-box">
      <i class="iconfont icon-search"></i>
      <input type="text" placeholder="搜索商家、商品">
    </div>
    <!-- 导航菜单 -->
    <div class="menu">
      <ul>
        <li v-for="(item, index) in menuItems"
          :key="index"
          :class="{active: item.active}"
          @click="onMenuClick(index)">
          {{ item.name }}
        </li>
      </ul>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      menuItems: [
        {name: '点餐', active: true},
        {name: '评价', active: false},
        {name: '商家', active: false},
        {name: '我的', active: false},
      ],
    }
  },
  methods: {
    onMenuClick(index) {
      this.menuItems.forEach((item, i) => {
        item.active = i === index;
      });
    }
  }
};
</script>

<style>
  /* 样式 */
</style>

Das Datenattribut wird hier verwendet, um die Daten und Statusinformationen des Navigationsmenüs zu speichern, und die Menüelemente werden dynamisch über die v-for-Direktive und den angegebenen Schlüsselwert generiert Paar. In der Methode onMenuClick wird der Aktivierungsstatus des Menüelements basierend auf dem Klickereignis festgelegt.

  1. Implementieren Sie die Produktlistenkomponente

Die Produktlistenkomponente enthält Produktbilder, Namen, Beschreibungen, Preise, Einkaufswagen und andere Informationen. Diese Komponente kann mithilfe der Vue-Komponente implementiert werden:

<template>
  <div class="product-list">
    <div v-for="(product, index) in products"
      :key="index"
      class="product-item">
      <div class="product-image">
        <img :src="product.image" :alt="product.name">
      </div>
      <div class="product-content">
        <h3 class="product-name">{{ product.name }}</h3>
        <p class="product-desc">{{ product.desc }}</p>
        <div class="product-price">{{ product.price }} 元</div>
        <div class="product-action">
          <div class="cart-btn"
            :class="{active: product.count > 0}"
            @click="onCartClick(product)">
            <i class="iconfont icon-gouwuche"></i>
          </div>
          <div class="count"
            v-show="product.count > 0">
            {{ product.count }}
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      products: [
        {
          image: 'product-1.png',
          name: '烤鸭',
          desc: '烤鸭又称烤北京鸭,是中国传统名菜之一。',
          price: 58,
          count: 0,
        },
        // ...
      ]
    }
  },
  methods: {
    onCartClick(product) {
      product.count++;
    }
  }
};
</script>

<style>
  /* 样式 */
</style>

Das Datenattribut wird hier zum Speichern der Daten und Statusinformationen der Produktliste verwendet. Die Produktlistenelemente werden dynamisch über die V-For-Direktive und den angegebenen Schlüssel generiert. Wertepaar. In der Methode onCartClick wird die Menge des Produkts entsprechend dem Klickereignis erhöht und das Anzeigen und Ausblenden der Menge wird über die V-Show-Anweisung gesteuert.

  1. Implementieren Sie die untere Menüleistenkomponente.

Die untere Menüleistenkomponente umfasst Warenkorb-, Checkout- und Übermittlungsfunktionen. Diese Komponente kann mit der Vue-Komponente implementiert werden:

<template>
  <div class="menu-bar">
    <!-- 购物车 -->
    <div class="cart">
      <div class="cart-icon">
        <i class="iconfont icon-gouwuche"></i>
      </div>
      <div class="cart-count" v-show="totalCount > 0">
        {{ totalCount }}
      </div>
    </div>
    <!-- 总金额 -->
    <div class="total-price">
      合计 {{ totalPrice }} 元
    </div>
    <!-- 结算和提交 -->
    <div class="checkout">
      <div class="checkout-btn" v-show="totalPrice > 0">
        去结算
      </div>
      <div class="submit-btn" v-show="totalPrice > 0">
        提交订单
      </div>
    </div>
  </div>
</template>

<script>
export default {
  computed: {
    totalCount() {
      let count = 0;
      this.products.forEach(product => {
        count += product.count;
      });
      return count;
    },
    totalPrice() {
      let price = 0;
      this.products.forEach(product => {
        price += product.count * product.price;
      });
      return price;
    },
  }
};
</script>

<style>
  /* 样式 */
</style>

Das berechnete Attribut wird hier verwendet, um die Anzahl der Artikel und den Gesamtbetrag zu berechnen, und die V-Show-Anweisung wird verwendet, um das Anzeigen und Ausblenden der Abrechnungs- und Übermittlungsschaltflächen zu steuern .

  1. Zusammenfassung

Durch die oben genannten Schritte wurde Vue erfolgreich zur Implementierung einer Meituan-ähnlichen Catering-Bestellseite eingesetzt. Während des gesamten Prozesses müssen Sie geeignete Technologien und Tools verwenden, um das Layout zu entwerfen, Komponenten zu zeichnen, Code zu schreiben sowie die Seite zu debuggen und zu optimieren, um eine schöne, praktische und effiziente Seite zu erhalten.

Das obige ist der detaillierte Inhalt vonWie implementiert man mit Vue eine Meituan-ähnliche Catering-Bestellseite?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn