Heim  >  Artikel  >  Web-Frontend  >  So implementieren Sie unendliches Scrollen, um die Anwendungsleistung mithilfe der virtuellen Liste von Vue zu optimieren

So implementieren Sie unendliches Scrollen, um die Anwendungsleistung mithilfe der virtuellen Liste von Vue zu optimieren

WBOY
WBOYOriginal
2023-07-17 08:55:39862Durchsuche

So optimieren Sie die Anwendungsleistung durch endloses Scrollen durch die virtuelle Liste von Vue

Da die Komplexität von Front-End-Anwendungen weiter zunimmt, insbesondere bei der Verarbeitung großer Datenmengen, treten auch einige Leistungsprobleme auf. In dieser Hinsicht bietet Vue ein leistungsstarkes Tool – Virtual List, das die Anwendungsleistung bei der Verarbeitung großer Datenmengen erheblich verbessern kann, indem sichtbare Elemente in der Liste dynamisch gerendert werden.

In diesem Artikel erfahren Sie, wie Sie die virtuelle Liste von Vue verwenden, um unendliches Scrollen zu erreichen und die Anwendungsleistung zu optimieren. Am Beispiel einer virtuellen Adressbuch-App zeigen wir, wie man große Datenmengen lädt und Kontakte beim Scrollen dynamisch sichtbar macht.

Zuerst müssen wir mit Vue CLI ein neues Vue-Projekt erstellen und das Plugin vue-virtual-scroll-list hinzufügen.

vue create virtual-list-demo
cd virtual-list-demo
yarn add vue-virtual-scroll-list

Dann können wir in der App.vue-Datei mit dem Erstellen der virtuellen Adressbuch-App beginnen.

<template>
  <div class="app">
    <div class="header">虚拟通讯录</div>
    <div class="contact-list" ref="listRef">
      <ul>
        <li v-for="contact in visibleData" :key="contact.id" class="contact-item">{{ contact.name }}</li>
      </ul>
    </div>
  </div>
</template>

<script>
import VirtualList from 'vue-virtual-scroll-list';

export default {
  name: 'App',
  components: {
    VirtualList,
  },
  data() {
    return {
      contactList: [], // 存放所有联系人数据
      visibleData: [], // 存放可见的联系人数据
      startIndex: 0, // 起始索引
      endIndex: 0, // 结束索引
      listHeight: 500, // 虚拟列表的高度
      itemHeight: 50, // 每一项的高度
    };
  },
  created() {
    // 模拟加载联系人数据
    const contacts = [];
    for (let i = 0; i < 100000; i++) {
      contacts.push({
        id: i,
        name: `联系人${i}`,
      });
    }
    this.contactList = contacts;
    this.updateVisibleData();
  },
  methods: {
    // 根据滚动位置计算可见数据并更新
    updateVisibleData() {
      const start = Math.max(0, Math.floor(this.startIndex / this.itemHeight));
      const end = Math.min(
        this.contactList.length - 1,
        Math.floor((this.startIndex + this.listHeight) / this.itemHeight)
      );
      this.visibleData = this.contactList.slice(start, end + 1);
    },
    // 监听滚动事件
    handleScroll(event) {
      const scrollTop = event.target.scrollTop;
      this.startIndex = Math.max(0, Math.floor(scrollTop));
      this.endIndex = Math.min(
        this.contactList.length - 1,
        Math.floor(scrollTop + this.listHeight)
      );
      this.updateVisibleData();
    },
  },
};
</script>

<style scoped>
.app {
  font-family: Arial, sans-serif;
}

.header {
  background-color: #f5f5f5;
  padding: 10px;
  text-align: center;
  font-size: 18px;
}

.contact-list {
  height: 500px;
  overflow-y: auto;
}

.contact-item {
  height: 50px;
  line-height: 50px;
  padding-left: 20px;
  border-bottom: 1px solid #f5f5f5;
}

</style>

Im obigen Code verwenden wir die Komponente vue-virtual-scroll-list, um die Kontaktliste zu umschließen und den virtuellen Scrolleffekt zu erzielen. Im erstellten Lebenszyklus-Hook haben wir 100.000 simulierte Kontaktdaten generiert und die relevanten Parameter der virtuellen Liste initialisiert, wie z. B. die Höhe der Liste, die Höhe jedes Elements usw. In der Methode handleScroll berechnen wir die Scrollposition und aktualisieren die sichtbaren Kontaktdaten. Rendern Sie dann die sichtbaren Kontakte über die v-for-Direktive in der Vorlage.

Auf diese Weise wird auch dann, wenn eine große Datenmenge gerendert werden muss, nur der sichtbare Teil gerendert, was die Anzahl der DOM-Knoten erheblich reduziert und somit die Leistung der Anwendung verbessert.

Abschließend führen wir die App aus und testen die Leistung durch Scrollen. Sie werden feststellen, dass die App auch dann flüssig bleibt, wenn viele Daten geladen werden müssen.

Zusammenfassend lässt sich sagen, dass wir mit dem virtuellen Listen-Plugin von Vue unendliches Scrollen erreichen und die Anwendungsleistung optimieren können. Unabhängig davon, ob es sich um Listen mit großen Datenmengen oder um andere Szenarien handelt, die ein dynamisches Rendering erfordern, sind virtuelle Listen ein sehr nützliches Werkzeug.

Das Obige ist eine Einführung in die Optimierung der Anwendungsleistung durch endloses Scrollen durch die virtuelle Liste von Vue. Ich hoffe, dieser Artikel kann Ihnen hilfreich sein!

Das obige ist der detaillierte Inhalt vonSo implementieren Sie unendliches Scrollen, um die Anwendungsleistung mithilfe der virtuellen Liste von Vue zu optimieren. 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