Inhaltsverzeichnis
1. Grundkenntnisse von Vue
1.1 Installation und Verwendung von Vue
1.2 Komponentenbasierte Entwicklung von Vue
{{ title }}
1.3 Ereignisbindung und -auslösung von Vue
2. Design der E-Commerce-Plattform
3. Implementierungsschritte der E-Commerce-Plattform
3.1 Startseite
{{ product.name }}
3.2 Produktdetailseite
3.3 Warenkorbseite
购物车
3.4 Bestellbestätigungsseite und Bestellerfolgsseite
确认订单
订单详情
Heim Web-Frontend View.js Vue-Entwicklungspraxis: Aufbau einer reaktionsfähigen E-Commerce-Plattform

Vue-Entwicklungspraxis: Aufbau einer reaktionsfähigen E-Commerce-Plattform

Nov 03, 2023 am 08:22 AM
vue 响应式 电商平台

Vue-Entwicklungspraxis: Aufbau einer reaktionsfähigen E-Commerce-Plattform

Vue ist ein beliebtes JavaScript-Framework, das in der Webentwicklung weit verbreitet ist. In diesem Artikel wird erläutert, wie Sie mit Vue eine reaktionsfähige E-Commerce-Plattform erstellen. Wir werden Vue verwenden, um die Front-End-Schnittstelle zu erstellen und die Back-End-API-Schnittstelle aufzurufen, um Daten abzurufen. Wir werden auch den Reaktionsmechanismus von Vue verwenden, um eine automatische Aktualisierung und dynamische Darstellung von Daten zu erreichen. Im Folgenden werden die Grundkenntnisse von Vue sowie die Entwurfs- und Implementierungsschritte der E-Commerce-Plattform vorgestellt.

1. Grundkenntnisse von Vue

1.1 Installation und Verwendung von Vue

Vue kann über CDN-Referenz oder direkt durch Herunterladen des Installationspakets verwendet werden. Wir verwenden hier das offiziell bereitgestellte Vue CLI-Build-Tool, um schnell ein Vue-Projekt zu erstellen.

Installieren Sie Vue CLI global:

npm install -g vue-cli
Nach dem Login kopieren

Erstellen Sie ein neues Vue-Projekt mit Vue CLI:

vue create my-project
Nach dem Login kopieren

1.2 Komponentenbasierte Entwicklung von Vue

Die Kernidee von Vue ist die komponentenbasierte Entwicklung. Eine Vue-Anwendung kann erstellt werden aus mehreren Komponenten. Jede Komponente kann Vorlagen, Geschäftslogik und Stile enthalten. Komponenten können ineinander verschachtelt sein und Daten weitergeben, wodurch komplexe Seitenstrukturen entstehen.

Hier ist ein einfaches Beispiel für eine Vue-Komponente:

<template>
  <div>
    <h1 id="title">{{ title }}</h1>
    <ul>
      <li v-for="item in items">{{ item }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  name: 'MyComponent',
  props: {
    title: String,
    items: Array
  }
}
</script>

<style>
h1 {
  color: #333;
}
li {
  color: #666;
}
</style>
Nach dem Login kopieren

Der obige Code definiert eine Komponente namens MyComponent, die einen Titel und eine Liste enthält. Komponenten können übergeordnete Komponentendaten über das Props-Attribut übergeben. Hier werden die Attribute title und items verwendet.

1.3 Ereignisbindung und -auslösung von Vue

Vues Ereignisbindung und -auslösung ähneln anderen Frameworks. Sie können Ereignisse über die v-on-Direktive binden und Ereignisse über die $emit-Methode auslösen. Ereignisse können Parameter und Daten übergeben.

Das Folgende ist ein einfaches Beispiel für die Bindung und Auslösung von Ereignissen:

<template>
  <div>
    <button v-on:click="handleClick">Click me</button>
  </div>
</template>

<script>
export default {
  methods: {
    handleClick() {
      this.$emit('custom-event', 'Hello, world!')
    }
  }
}
</script>
Nach dem Login kopieren

Der obige Code definiert eine Methode namens handleClick, die das benutzerdefinierte Ereignisereignis auslöst und einen Zeichenfolgenparameter übergibt, wenn auf die Schaltfläche geklickt wird.

2. Design der E-Commerce-Plattform

E-Commerce-Plattformen umfassen in der Regel Funktionen wie Produktanzeige, Warenkorb, Bestellbestätigung und Zahlung. Basierend auf diesen Funktionen entwerfen wir eine einfache E-Commerce-Plattform, einschließlich der folgenden Seiten:

  • Startseite: Zeigt alle Produktinformationen an und unterstützt Suche und Klassifizierung.
  • Produktdetailseite: Zeigt detaillierte Informationen zu einem einzelnen Produkt an und unterstützt das Hinzufügen zum Warenkorb.
  • Warenkorbseite: Zeigt alle zum Warenkorb hinzugefügten Produktinformationen an und unterstützt Clearing- und Abrechnungsvorgänge.
  • Bestellbestätigungsseite: Zeigt alle ausgewählten Produktinformationen an und unterstützt das Ausfüllen von Informationen wie Adresse und Zahlungsmethode.
  • Bestellerfolgsseite: Zeigt Bestelldetails an und unterstützt die Rückkehr zur Startseite.

Zur Vereinfachung der Demonstration stellen wir nur statische Daten und eine mit Axios simulierte API-Schnittstelle zur Verfügung. Die Backend-Daten verwenden das JSON-Format und enthalten alle Produktinformationen und Bestellinformationen.

3. Implementierungsschritte der E-Commerce-Plattform

3.1 Startseite

Die Startseite zeigt alle Produktinformationen an und unterstützt die Suche und Klassifizierung. Wir verwenden Bootstrap- und FontAwesome-Bibliotheken, um Seitenstile und Symbole zu verschönern.

Installieren Sie zunächst diese beiden Bibliotheken:

npm install bootstrap font-awesome --save
Nach dem Login kopieren

Fügen Sie Stilverweise zur App.vue-Datei hinzu:

<template>
  <div>
    <nav class="navbar navbar-dark bg-dark">
      <a class="navbar-brand" href="#">电商平台</a>
    </nav>
    <div class="container mt-4">
      <router-view></router-view>
    </div>
  </div>
</template>

<style>
@import "bootstrap/dist/css/bootstrap.min.css";
@import "font-awesome/css/font-awesome.min.css";
</style>
Nach dem Login kopieren

Verwenden Sie Vue Router, um Seitensprünge zu implementieren und Parameter zu übergeben. Fügen Sie den folgenden Code zur Datei main.js hinzu:

import Vue from 'vue'
import App from './App.vue'
import router from './router'

Vue.config.productionTip = false

new Vue({
  router,
  render: h => h(App),
}).$mount('#app')
Nach dem Login kopieren

Erstellen Sie die Datei router.js, um die Routing-Konfiguration zu definieren:

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from './views/Home.vue'

Vue.use(VueRouter)

export default new VueRouter({
  mode: 'history',
  routes: [
    {
      path: '/',
      name: 'home',
      component: Home
    }
  ]
})
Nach dem Login kopieren

Erstellen Sie die Datei Home.vue, um die Anzeige- und Suchfunktionen der Startseite zu implementieren:

<template>
  <div>
    <div class="input-group mb-4">
      <input type="text" class="form-control" v-model="searchText" placeholder="Search...">
      <div class="input-group-append">
        <button class="btn btn-outline-secondary" type="button" v-on:click="search">Search</button>
      </div>
    </div>
    <div class="row">
      <div class="col-md-4 mb-4" v-for="product in products" :key="product.id">
        <div class="card">
          <img class="card-img-top lazy"  src="/static/imghw/default1.png"  data-src="product.image"  : alt="Card image cap">
          <div class="card-body">
            <h5 id="product-name">{{ product.name }}</h5>
            <p class="card-text">{{ product.description }}</p>
            <p class="card-text font-weight-bold text-danger">{{ product.price }}</p>
            <button class="btn btn-primary" v-on:click="addToCart(product)">加入购物车</button>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
import axios from 'axios'

export default {
  data() {
    return {
      products: [],
      searchText: ''
    }
  },
  created() {
    this.getProducts()
  },
  methods: {
    getProducts() {
      axios.get('/api/products').then(response => {
        this.products = response.data
      })
    },
    search() {
      axios.get('/api/products', {
        params: {
          search: this.searchText
        }
      }).then(response => {
        this.products = response.data
      })
    },
    addToCart(product) {
      this.$emit('add-to-cart', product)
    }
  }
}
</script>
Nach dem Login kopieren

Der obige Code ruft auf Die API-Schnittstelle über Axios zum Abrufen von Produktinformationen und unterstützt Suchvorgänge und das Hinzufügen zum Warenkorb.

3.2 Produktdetailseite

Die Produktdetailseite zeigt die detaillierten Informationen zu einem einzelnen Produkt an und unterstützt das Hinzufügen zum Warenkorb. Wir verwenden Vue Router, um den Produkt-ID-Parameter zu übergeben.

Erstellen Sie die Datei Product.vue, um die Produktdetailseite zu implementieren:

<template>
  <div>
    <div class="row mt-4">
      <div class="col-md-6">
        <img class="img-fluid lazy"  src="/static/imghw/default1.png"  data-src="product.image"  : alt="">
      </div>
      <div class="col-md-6">
        <h2 id="product-name">{{ product.name }}</h2>
        <p>{{ product.description }}</p>
        <p class="font-weight-bold text-danger">{{ product.price }}</p>
        <button class="btn btn-primary btn-lg" v-on:click="addToCart(product)">加入购物车</button>
      </div>
    </div>
  </div>
</template>

<script>
import axios from 'axios'

export default {
  data() {
    return {
      product: {}
    }
  },
  created() {
    const productId = this.$route.params.id
    axios.get(`/api/products/${productId}`).then(response => {
      this.product = response.data
    })
  },
  methods: {
    addToCart(product) {
      this.$emit('add-to-cart', product)
    }
  }
}
</script>
Nach dem Login kopieren

Verwenden Sie Vue Router, um den Produkt-ID-Parameter zu übergeben. Ändern Sie die Konfigurationsdatei router.js:

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from './views/Home.vue'
import Product from './views/Product.vue'

Vue.use(VueRouter)

export default new VueRouter({
  mode: 'history',
  routes: [
    {
      path: '/',
      name: 'home',
      component: Home
    },
    {
      path: '/product/:id',
      name: 'product',
      component: Product
    }
  ]
})
Nach dem Login kopieren

3.3 Warenkorbseite

Die Warenkorbseite zeigt alle zum Warenkorb hinzugefügten Produktinformationen an und unterstützt Clearing- und Abrechnungsvorgänge. Wir verwenden Vuex für die Zustandsverwaltung und den Datenaustausch.

Installieren Sie die Vuex-Bibliothek:

npm install vuex --save
Nach dem Login kopieren

Erstellen Sie die Datei store.js, um die Statusverwaltung von Vuex zu konfigurieren:

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    cart: []
  },
  mutations: {
    addToCart(state, product) {
      const item = state.cart.find(item => item.id === product.id)
      if (item) {
        item.quantity++
      } else {
        state.cart.push({
          ...product,
          quantity: 1
        })
      }
    },
    removeFromCart(state, productId) {
      state.cart = state.cart.filter(item => item.id !== productId)
    },
    clearCart(state) {
      state.cart = []
    }
  },
  getters: {
    cartTotal(state) {
      return state.cart.reduce((total, item) => {
        return total + item.quantity
      }, 0)
    },
    cartSubtotal(state) {
      return state.cart.reduce((total, item) => {
        return total + item.price * item.quantity
      }, 0)
    }
  }
})
Nach dem Login kopieren

Ändern Sie den Code von App.vue, um die Statusverwaltung von Vuex zu konfigurieren:

<template>
  <div>
    <nav class="navbar navbar-dark bg-dark">
      <a class="navbar-brand" href="#">电商平台</a>
      <span class="badge badge-pill badge-primary">{{ cartTotal }}</span>
    </nav>
    <div class="container mt-4">
      <router-view :cart="cart" v-on:add-to-cart="addToCart"></router-view>
    </div>
    <div class="modal" tabindex="-1" role="dialog" v-if="cart.length > 0">
      <div class="modal-dialog" role="document">
        <div class="modal-content">
          <div class="modal-header">
            <h5 id="购物车">购物车</h5>
            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
              <span aria-hidden="true">&times;</span>
            </button>
          </div>
          <div class="modal-body">
            <table class="table">
              <thead>
                <tr>
                  <th>名称</th>
                  <th>单价</th>
                  <th>数量</th>
                  <th>小计</th>
                  <th></th>
                </tr>
              </thead>
              <tbody>
                <tr v-for="item in cart" :key="item.id">
                  <td>{{ item.name }}</td>
                  <td>{{ item.price }}</td>
                  <td>
                    <button class="btn btn-sm btn-danger" v-on:click="removeFromCart(item.id)">-</button>
                    {{ item.quantity }}
                    <button class="btn btn-sm btn-success" v-on:click="addToCart(item)">+</button>
                  </td>
                  <td>{{ item.price * item.quantity }}</td>
                  <td><i class="fa fa-remove text-danger" v-on:click="removeFromCart(item.id)"></i></td>
                </tr>
              </tbody>
              <tfoot>
                <tr>
                  <td colspan="2">共 {{ cartTotal }} 件商品</td>
                  <td colspan="2">总计 {{ cartSubtotal }}</td>
                  <td><button class="btn btn-sm btn-danger" v-on:click="clearCart()">清空购物车</button></td>
                </tr>
              </tfoot>
            </table>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
import store from './store'

export default {
  computed: {
    cart() {
      return store.state.cart
    },
    cartTotal() {
      return store.getters.cartTotal
    }
  },
  methods: {
    addToCart(product) {
      store.commit('addToCart', product)
    },
    removeFromCart(productId) {
      store.commit('removeFromCart', productId)
    },
    clearCart() {
      store.commit('clearCart')
    }
  }
}
</script>
Nach dem Login kopieren

Der obige Code verwendet Vuex um das Hinzufügen und Löschen des Warenkorbs sowie die Lösch- und Berechnungsfunktionen zu implementieren.

3.4 Bestellbestätigungsseite und Bestellerfolgsseite

Die Bestellbestätigungsseite zeigt alle ausgewählten Produktinformationen an und unterstützt das Ausfüllen von Informationen wie Adresse und Zahlungsmethode. Die Bestellerfolgsseite zeigt die Bestelldetails an und unterstützt die Rückkehr zur Startseite. Wir verwenden Vue Router, um Bestellinformationsparameter zu übergeben.

Erstellen Sie die Cart.vue-Datei, um die Bestellbestätigungsseite zu implementieren:

<template>
  <div>
    <h2 id="确认订单">确认订单</h2>
    <table class="table">
      <thead>
        <tr>
          <th>名称</th>
          <th>单价</th>
          <th>数量</th>
          <th>小计</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="item in cart" :key="item.id">
          <td>{{ item.name }}</td>
          <td>{{ item.price }}</td>
          <td>{{ item.quantity }}</td>
          <td>{{ item.price * item.quantity }}</td>
        </tr>
      </tbody>
      <tfoot>
        <tr>
          <td colspan="2">共 {{ cartTotal }} 件商品</td>
          <td colspan="2">总计 {{ cartSubtotal }}</td>
        </tr>
      </tfoot>
    </table>
    <div class="form-group">
      <label for="name">姓名</label>
      <input type="text" class="form-control" id="name" v-model="name">
    </div>
    <div class="form-group">
      <label for="address">地址</label>
      <textarea class="form-control" id="address" v-model="address"></textarea>
    </div>
    <div class="form-group">
      <label for="payment">支付方式</label>
      <select class="form-control" id="payment" v-model="payment">
        <option value="alipay">支付宝</option>
        <option value="wechatpay">微信支付</option>
        <option value="creditcard">信用卡</option>
      </select>
    </div>
    <button class="btn btn-primary btn-lg" v-on:click="checkout">提交订单</button>
  </div>
</template>

<script>
export default {
  props: ['cartTotal', 'cartSubtotal'],
  data() {
    return {
      name: '',
      address: '',
      payment: 'alipay'
    }
  },
  methods: {
    checkout() {
      this.$router.push({
        name: 'order-success',
        params: {
          name: this.name,
          address: this.address,
          payment: this.payment,
          cart: this.$props.cart,
          cartTotal: this.cartTotal,
          cartSubtotal: this.cartSubtotal
        }
      })
    }
  }
}
</script>
Nach dem Login kopieren

Erstellen Sie die OrderSuccess.vue-Datei, um die Bestellerfolgsseite zu implementieren:

<template>
  <div>
    <h2 id="订单详情">订单详情</h2>
    <p>姓名:{{ name }}</p>
    <p>地址:{{ address }}</p>
    <p>支付方式:{{ payment }}</p>
    <table class="table">
      <thead>
        <tr>
          <th>名称</th>
          <th>单价</th>
          <th>数量</th>
          <th>小计</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="item in cart" :key="item.id">
          <td>{{ item.name }}</td>
          <td>{{ item.price }}</td>
          <td>{{ item.quantity }}</td>
          <td>{{ item.price * item.quantity }}</td>
        </tr>
      </tbody>
      <tfoot>
        <tr>
          <td colspan="2">共 {{ cartTotal }} 件商品</td>
          <td colspan="2">总计 {{ cartSubtotal }}</td>
        </tr>
      </tfoot>
    </table>
    <button class="btn btn-primary btn-lg" v-on:click="backHome">返回首页</button>
  </div>
</template>

<script>
export default {
  props: ['name', 'address', 'payment', 'cart', 'cartTotal', 'cartSubtotal'],
  methods: {
    backHome() {
      this.$router.push('/')
    }
  }
}
</script>
Nach dem Login kopieren

Verwenden Sie Vue Router, um die Bestellinformationsparameter zu übergeben. Ändern Sie die Konfigurationsdatei von router.js:

import Vue from 'vue'
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonVue-Entwicklungspraxis: Aufbau einer reaktionsfähigen E-Commerce-Plattform. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie Bootstrap in Vue So verwenden Sie Bootstrap in Vue Apr 07, 2025 pm 11:33 PM

Die Verwendung von Bootstrap in Vue.js ist in fünf Schritte unterteilt: Startstrap installieren. Bootstrap in main.js. Verwenden Sie die Bootstrap -Komponente direkt in der Vorlage. Optional: benutzerdefinierter Stil. Optional: Verwenden Sie Plug-Ins.

So fügen Sie Funktionen zu Schaltflächen für Vue hinzu So fügen Sie Funktionen zu Schaltflächen für Vue hinzu Apr 08, 2025 am 08:51 AM

Sie können der VUE -Taste eine Funktion hinzufügen, indem Sie die Taste in der HTML -Vorlage an eine Methode binden. Definieren Sie die Methode und schreiben Sie die Funktionslogik in der VUE -Instanz.

So verweisen Sie auf die JS -Datei mit Vue.js So verweisen Sie auf die JS -Datei mit Vue.js Apr 07, 2025 pm 11:27 PM

Es gibt drei Möglichkeiten, sich auf JS -Dateien in Vue.js zu beziehen: Geben Sie den Pfad direkt mit dem & lt; Skript & gt an. Etikett;; Dynamischer Import mit dem montierten () Lebenszyklushaken; und importieren über die Vuex State Management Library.

So verwenden Sie Watch in Vue So verwenden Sie Watch in Vue Apr 07, 2025 pm 11:36 PM

Mit der Watch -Option in Vue.js können Entwickler auf Änderungen in bestimmten Daten anhören. Wenn sich die Daten ändert, löst sich eine Rückruffunktion aus, um Aktualisierungsansichten oder andere Aufgaben auszuführen. Zu den Konfigurationsoptionen gehören unmittelbar, die festlegen, ob ein Rückruf sofort ausgeführt werden soll, und Deep, das feststellt, ob Änderungen an Objekten oder Arrays rekursiv anhören sollen.

Was bedeutet VUE Multi-Page-Entwicklung? Was bedeutet VUE Multi-Page-Entwicklung? Apr 07, 2025 pm 11:57 PM

VUE Multi-Page-Entwicklung ist eine Möglichkeit, Anwendungen mithilfe des Vue.js-Frameworks zu erstellen, in dem die Anwendung in separate Seiten unterteilt ist: Code-Wartung: Die Aufteilung der Anwendung in mehrere Seiten kann das Verwalten und Wartungsbereich erleichtern. Modularität: Jede Seite kann als separates Modul für eine einfache Wiederverwendung und den Austausch verwendet werden. Einfaches Routing: Die Navigation zwischen Seiten kann durch einfache Routing -Konfiguration verwaltet werden. SEO -Optimierung: Jede Seite hat eine eigene URL, die SEO hilft.

So kehren Sie von Vue zur vorherigen Seite zurück So kehren Sie von Vue zur vorherigen Seite zurück Apr 07, 2025 pm 11:30 PM

VUE.JS hat vier Methoden, um zur vorherigen Seite zurückzukehren: $ router.go (-1) $ router.back () verwendet & lt; Router-Link to = & quot;/& quot; Komponentenfenster.history.back () und die Methodenauswahl hängt von der Szene ab.

So verwenden Sie Vue Traversal So verwenden Sie Vue Traversal Apr 07, 2025 pm 11:48 PM

Es gibt drei gängige Methoden für Vue.js, um Arrays und Objekte zu durchqueren: Die V-für-Anweisung wird verwendet, um jedes Element zu durchqueren und Vorlagen zu rendern; Die V-Bind-Anweisung kann mit V-für dynamisch Attributwerte für jedes Element verwendet werden. und die .MAP -Methode kann Array -Elemente in Neuarrays umwandeln.

Wie man einen Tag zum Vue springt Wie man einen Tag zum Vue springt Apr 08, 2025 am 09:24 AM

Zu den Methoden zum Implementieren des Sprung eines Tags in VUE gehören: Verwenden des A -Tags in der HTML -Vorlage, um das HREF -Attribut anzugeben. Verwenden Sie die Router-Link-Komponente des Vue-Routings. Verwenden Sie dies. $ Router.push () Methode in JavaScript. Parameter können durch den Abfrageparameter weitergeleitet werden, und Routen sind in den Routeroptionen für dynamische Sprünge konfiguriert.

See all articles