Inhaltsverzeichnis
Unendliches Scrollen erreichen
Vorbereitung der Datenquelle
Installieren und verwenden Sie die Vue-Infinite-Scroll-Bibliothek Bibliothek namens vue-infinite-scroll, die den Kernmechanismus der Infinite-Scroll-Funktionalität sowie die erforderlichen Anweisungen und Komponenten bereitstellt. Um diese Bibliothek zu installieren, können Sie den npm-Befehl verwenden:
Heim Web-Frontend View.js Wie erstelle ich mit Vue ein unendliches Scroll- und Wasserfall-Flow-Layout?

Wie erstelle ich mit Vue ein unendliches Scroll- und Wasserfall-Flow-Layout?

Jun 27, 2023 pm 01:32 PM
vue 瀑布流布局 无限滚动

Vue.js ist ein beliebtes JavaScript-Framework, mit dem Entwickler auf einfache Weise dynamische, reaktionsfähige Webanwendungen erstellen können. Unter ihnen wird es von Entwicklern besonders wegen seiner leistungsstarken Komponentenentwicklungsfähigkeiten bevorzugt. Unendliches Scrollen und Wasserfall-Layout sind zu einem unverzichtbaren Merkmal der modernen Webentwicklung geworden.

Dieser Artikel soll vorstellen, wie man Vue.js in Kombination mit einigen Bibliotheken von Drittanbietern verwendet, um unendliche Scroll- und Wasserfall-Layout-Funktionen zu implementieren.

Unendliches Scrollen erreichen

Unendliches Scrollen bezieht sich darauf, beim Scrollen zum Ende der Seite weiterhin mehr Inhalte zu laden und so eine unendliche Erweiterung des Seiteninhalts zu erreichen. Diese Technik funktioniert für Tausende von Dateneinträgen und kann das Benutzererlebnis erheblich verbessern.

Vorbereitung der Datenquelle

Zuerst müssen wir eine Datenquelle vorbereiten, die zumindest einige Datenelemente enthält. Hier verwenden wir ein einfaches Beispiel zur Veranschaulichung. Angenommen, wir haben eine Liste mit unendlich scrollbaren Datenelementen, die 100 Datenelemente enthält. Die Datenquelle kann wie folgt aussehen:

[
  {id: 1, text: 'Item 1'},
  {id: 2, text: 'Item 2'},
  // ... more data
  {id: 99, text: 'Item 99'},
  {id: 100, text: 'Item 100'},
]
Nach dem Login kopieren

Installieren und verwenden Sie die Vue-Infinite-Scroll-Bibliothek Bibliothek namens vue-infinite-scroll, die den Kernmechanismus der Infinite-Scroll-Funktionalität sowie die erforderlichen Anweisungen und Komponenten bereitstellt. Um diese Bibliothek zu installieren, können Sie den npm-Befehl verwenden:

npm install vue-infinite-scroll
Nach dem Login kopieren

Registrieren Sie die erforderlichen Anweisungen global:

import infiniteScroll from 'vue-infinite-scroll'
Vue.use(infiniteScroll)
Nach dem Login kopieren

In unserer Komponente müssen wir einige Konfigurationen und Daten festlegen:

<template>
  <div class="scroll-list" v-infinite-scroll="loadMore" infinite-scroll-disabled="busy" infinite-scroll-distance="10">
    <ul>
      <li v-for="(item, index) in items" :key="index">{{ item.text }}</li>
    </ul>
    <div v-if="busy" class="loading">
      Loading ...
    </div>
  </div>
</template>
<script>
export default {
  data () {
    return {
      items: [], // 当前列表所有数据
      busy: false, // 标记是否正在请求数据
      page: 1, // 当前数据分页
      perPage: 10, // 每页数量
      total: 100, // 总数据量
    }
  },
  methods: {
    loadMore() {
      // 标记正在加载数据
      this.busy = true
      // 模拟请求延迟
      setTimeout(() => {
        // 构造新数据
        const newItems = []
        const from = (this.page - 1) * this.perPage + 1
        const to = this.page * this.perPage
        for (let i = from; i <= to && i <= this.total; i++) {
          newItems.push({
            id: i,
            text: 'Item ' + i
          })
        }
        // 加载新数据
        this.items = [...this.items, ...newItems]
        // 增加当前页数
        this.page++
        // 去除加载数据标记
        this.busy = false
      }, 1000)
    }
  }
}
</script>
Nach dem Login kopieren

Codebeschreibung

v- infinite -scroll="loadMore": wird verwendet, um die Rückruffunktion anzugeben, um mehr Daten zu laden
  • infinite-scroll-disabled="busy": wird verwendet, um anzugeben, ob derzeit Daten angefordert werden v-infinite-scroll="loadMore":用于指定加载更多数据的回调函数
  • infinite-scroll-disabled="busy":用于指定当前是否正在请求数据
  • infinite-scroll-distance="10"
  • infinite-scroll-distance="10": wird verwendet, um das Ladedatenverhalten auszulösen, wenn angegeben wird, wie viele Pixel die Bildlaufleiste von unten entfernt ist.

Implementierung des Wasserfall-Flusslayouts.

Wasserfall ist ein Das Kernkonzept des gemeinsamen Layouts besteht darin, dass Elemente unterschiedlicher Größe in derselben Zeile angezeigt werden können, und das Wasserfall-Flow-Layout passt sich automatisch der Anzahl der Elemente an. Wir können eine Vue-Komponentenbibliothek eines Drittanbieters namens vue-waterfall verwenden, um das Wasserfall-Layout mit nur wenigen Codezeilen einfach zu implementieren.

Installieren und verwenden Sie die Vue-Waterfall-Bibliothek.

Zuerst müssen wir die Vue-Waterfall-Komponentenbibliothek installieren:

npm install vue-waterfall
Nach dem Login kopieren

Die Komponente global registrieren:

import waterfall from 'vue-waterfall'
Vue.use(waterfall)
Nach dem Login kopieren

Dann können wir das Wasserfall-Flusslayout in der Komponente verwenden:

<template>
  <waterfall>
    <div v-for="(item, index) in items" :key="index">
      <h3>{{item.title}}</h3>
      <p>{{item.desc}}</p>
      <img :src="item.imgUrl" :alt="item.title">
    </div>
  </waterfall>
</template>
<script>
import axios from 'axios'

export default {
  data () {
    return {
      items: []
    }
  },
  created () {
    axios.get('https://api.example.com/items').then(response => {
      this.items = response.data
    })
  }
}
</script>
Nach dem Login kopieren

Codebeschreibung

Dieser Code verwendet die Axios-Bibliothek, um Daten aus einer Datenquelle abzurufen. Die Struktur der Daten ist ungefähr wie folgt:

[
  {
    title: 'Item 1',
    desc: 'This is item 1',
    imgUrl: 'https://example.com/item1.png',
  },
  {
    title: 'Item 2',
    desc: 'This is item 2',
    imgUrl: 'https://example.com/item2.png',
  },
  // ...
]
Nach dem Login kopieren

Optimieren Sie unendliche Scroll- und Wasserfallfluss-Layouts

In realen Anwendungsszenarien tatsächlich unendlich Scrollen und Wasserfall werden verarbeitet. Ein häufiges Problem beim Flow-Layout: Wenn die Datenquelle sehr groß ist, sinkt die Leistung der Komponente stark, was dazu führt, dass die Reaktion langsam wird oder sogar hängen bleibt. Hier stellen wir einige Optimierungsstrategien zur Verbesserung der Komponentenleistung vor.

Verwenden Sie die virtuelle Bildlauftechnologie.

Die Grundidee der virtuellen Bildlauftechnologie besteht darin, nur die vom Benutzer gesehenen Daten gemäß dem Anzeigeintervall zu rendern, anstatt alle Daten zu rendern. Auf diese Weise können wir die Rendering-Kosten der Komponente erheblich reduzieren und so die Leistung verbessern. Die Komponente vue-virtual-scroll-list ist eine zuverlässige Bibliothek zur Implementierung von virtuellem Scrollen, die in Verbindung mit den Bibliotheken vue-infinite-scroll oder vue-waterfall verwendet werden kann.

Installieren Sie die Vue-Virtual-Scroll-List-Bibliothek:

npm install vue-virtual-scroll-list
Nach dem Login kopieren

Wenn Sie diese Bibliothek verwenden, müssen Sie die folgenden Änderungen an der Komponente vornehmen:

<template>
  <virtual-scroll-list :size="75" :remain="10" :items="items" :key-field="'id'">
    <div slot-scope="{item}">
      <h3>{{item.title}}</h3>
      <p>{{item.desc}}</p>
      <img :src="item.imgUrl" :alt="item.title">
    </div>
  </virtual-scroll-list>
</template>
<script>
import axios from 'axios'
import VirtualScrollList from 'vue-virtual-scroll-list'

export default {
  components: { VirtualScrollList },
  data () {
    return {
      items: []
    }
  },
  created () {
    axios.get('https://api.example.com/items').then(response => {
      this.items = response.data
    })
  }
}
</script>
Nach dem Login kopieren

Unter anderem ersetzen wir die Vue-Waterfall-Komponente durch die Vue-Virtual -Scroll-List-Komponente, um einen virtuellen Scroll-Effekt zu erzielen.

Teilweises Laden

Eine weitere Möglichkeit, den Stress beim Rendern von Komponenten zu reduzieren, besteht darin, Daten in Teilen zu laden. Diese Methode ähnelt dem zuvor erwähnten unendlichen Scrollen, aber beim Laden von Daten werden segmentierte Daten bei Bedarf geladen, anstatt alle Daten auf einmal abzurufen. Wie implementiert man segmentiertes Laden? Eine einfache Lösung besteht darin, jeweils nur die ersten N Daten zu laden und dann die nächsten Daten zu laden, nachdem der Benutzer nach unten gescrollt hat. Diese Methode eignet sich für Situationen, in denen die Datenmenge relativ groß ist.

<template>
  <div class="scroll-list" v-infinite-scroll="loadMore" infinite-scroll-disabled="busy" infinite-scroll-distance="10">
    <ul>
      <li v-for="(item, index) in items" :key="index">{{ item.text }}</li>
    </ul>
    <div v-if="busy" class="loading">
      Loading ...
    </div>
  </div>
</template>
<script>
export default {
  data () {
    return {
      items: [], // 当前列表所有数据
      busy: false, // 标记是否正在请求数据
      page: 1, // 当前数据分页
      perPage: 10, // 每页数量
      total: 100, // 总数据量
    }
  },
  methods: {
    loadMore() {
      // 标记正在加载数据
      this.busy = true
      // 模拟请求延迟
      setTimeout(() => {
        // 构造新数据
        const newItems = []
        const from = (this.page - 1) * this.perPage + 1
        const to = this.page * this.perPage
        for (let i = from; i <= to && i <= this.total; i++) {
          newItems.push({
            id: i,
            text: 'Item ' + i
          })
        }
        // 加载新数据
        if (this.page <= 10) {
          this.items = [...this.items, ...newItems]
          // 增加当前页数
          this.page++
        } else {
          this.busy = true
        }
        // 去除加载数据标记
        this.busy = false
      }, 1000)
    }
  }
}
</script>
Nach dem Login kopieren
In diesem Code haben wir die LoadMore-Funktion geändert. Es werden jetzt nur die ersten 10 Seiten mit Daten abgerufen. Selbst wenn viele Daten vorhanden sind, kann auf diese Weise die Belastung der Komponente durch schrittweises Laden verringert werden.

Zusammenfassung

In diesem Artikel haben wir vorgestellt, wie man mit Vue.js unendliche Scroll- und Wasserfall-Layoutfunktionen erstellt, und außerdem einige Optimierungsmaßnahmen implementiert, um die Leistung von Komponenten zu verbessern. Im Allgemeinen reichen die drei Bibliotheken vue-infinite-scroll, vue-waterfall und vue-virtual-scroll-list aus, um unsere Arbeit abzuschließen, aber in der tatsächlichen Entwicklung müssen wir auch verschiedene Szenarien und unterschiedliche Datenstrukturen berücksichtigen die Lösung, die am besten zu Ihrem aktuellen Projekt passt. 🎜

Das obige ist der detaillierte Inhalt vonWie erstelle ich mit Vue ein unendliches Scroll- und Wasserfall-Flow-Layout?. 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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

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 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 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 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.

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.

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 fragen Sie die Version von Vue So fragen Sie die Version von Vue Apr 07, 2025 pm 11:24 PM

Sie können die Vue -Version mit Vue Devtools abfragen, um die Registerkarte VUE in der Konsole des Browsers anzuzeigen. Verwenden Sie NPM, um den Befehl "npm list -g vue" auszuführen. Suchen Sie das Vue -Element im Objekt "Abhängigkeiten" der Datei package.json. Führen Sie für Vue -CLI -Projekte den Befehl "Vue --version" aus. Überprüfen Sie die Versionsinformationen im & lt; Skript & gt; Tag in der HTML -Datei, die sich auf die VUE -Datei bezieht.

Wie man zum Div von Vue springt Wie man zum Div von Vue springt Apr 08, 2025 am 09:18 AM

Es gibt zwei Möglichkeiten, Divelemente in Vue zu springen: Verwenden Sie Vue Router und fügen Sie Router-Link-Komponente hinzu. Fügen Sie den @click Event -Listener hinzu und nennen Sie dies. $ Router.push () Methode zum Springen.

See all articles