So verwenden Sie Keep-Alive in vue2
vue2.0 bietet eine Keep-Alive-Komponente zum Zwischenspeichern von Komponenten, um das mehrfache Laden entsprechender Komponenten zu vermeiden und den Leistungsverbrauch zu reduzieren. Dieser Artikel stellt Ihnen eine Zusammenfassung und Vorsichtsmaßnahmen für die Verwendung von Keep-Alive in Vue2 vor. Freunde, die es benötigen, können darauf verweisen.
Keep-Alive ist eine integrierte Komponente von Vue, die den Status beibehalten kann im Speicher während des Komponentenwechsels verhindern. In Kombination mit Vue-Router kann der gesamte Inhalt einer Ansicht zwischengespeichert werden.
Die grundlegende Verwendung ist wie folgt:
<keep-alive> <component> <!-- 该组件将被缓存! --> </component> </keep-alive>
Im Allgemeinen besteht eine solche Nachfrage, wenn wir die Listenseite zum ersten Mal aufrufen Von der Listenseite aus wird die Detailseite nicht zwischengespeichert. Sie müssen Daten anfordern und dann zur Listenseite zurückkehren.
Es gibt zwei Situationen:
1. Klicken Sie direkt auf die Zurück-Schaltfläche des Browsers.
2. Klicken Sie auf den Link /list in der Navigationsleiste, um zurückzukehren.
Im ersten Fall besteht keine Notwendigkeit, Daten anzufordern, wenn wir direkt über die Schaltfläche „Zurück“ zur Listenseite (/list) zurückkehren.
Im zweiten Fall müssen wir Daten anfordern, indem wir über den Link zur Listenseite zurückkehren.
Hier gibt es also drei Situationen:
1. Standardmäßig muss die Listenseite Daten anfordern.
2. Verwenden Sie nach dem Aufrufen der Detailseite die Standard-Zurück-Schaltfläche des Browsers, um zurückzukehren, was keine Ajax-Anfrage erfordert.
3. Nachdem Sie die Detailseite aufgerufen und durch Klicken auf den Link zur Listenseite zurückgekehrt sind, müssen Sie auch eine Ajax-Anfrage senden.
Die Konfiguration ist wie folgt:
1. Die Eintragsdatei app.vue ist wie folgt konfiguriert:
<!-- 缓存所有的页面 --> <keep-alive> <router-view v-if="$route.meta.keep_alive"></router-view> </keep-alive> <router-view v-if="!$route.meta.keep_alive"></router-view>
2 : true, um anzugeben, dass der Cache verwendet werden muss. Wenn false, bedeutet dies, dass kein Cache verwendet werden muss. Und scrollBehavior
router/index.js-Konfiguration ist wie folgt:
import Vue from 'vue'; import Router from 'vue-router'; // import HelloWorld from '@/views/HelloWorld'; Vue.use(Router); const router = new Router({ mode: 'history', // 访问路径不带井号 需要使用 history模式,才能使用 scrollBehavior base: '/page/app', // 配置单页应用的基路径 routes: [ { path: '/', name: 'list', component: resolve => require(['@/views/list'], resolve), // 使用懒加载 meta: { keepAlive: true // true 表示需要使用缓存 } }, { path: '/list', name: 'list', component: resolve => require(['@/views/list'], resolve), // 使用懒加载 meta: { keepAlive: true // true 表示需要使用缓存 false表示不需要被缓存 } }, { path: '/detail', name: 'detail', component: resolve => require(['@/views/detail'], resolve) // 使用懒加载 } ], scrollBehavior (to, from, savedPosition) { // 保存到 meta 中,备用 to.meta.savedPosition = savedPosition; if (savedPosition) { return { x: 0, y: 0 }; } return {}; } }); export default router;
3. Der list.vue-Code lautet wie folgt:
<template> <p class="hello"> <h1>vue</h1> <h2>{{msg}}</h2> <router-link to="/detail">跳转到detail页</router-link> </p> </template> <script> export default { name: 'helloworld', data () { return { msg: 'Welcome to Your Vue.js App' }; }, methods: { ajaxRequest() { const obj = { 'aa': 1 }; Promise.all([this.$store.dispatch('testUrl', obj)]).then((res) => { console.log(res); }); } }, beforeRouteEnter(to, from, next) { next(vm => { /* 如果 to.meta.savedPosition === undefined 说明是刷新页面或可以叫第一次进入页面 需要刷新数据 如果savedPosition === null, 那么说明是点击了导航链接; 此时需要刷新数据,获取新的列表内容。 否则的话 什么都不做,直接使用 keep-alive中的缓存 */ if (to.meta.savedPosition === undefined) { vm.ajaxRequest(); } if (to.meta.savedPosition === null) { vm.ajaxRequest(); } }) } }; </script>
4 Der Code lautet wie folgt:
<template> <p class="list"> <h1>{{msg}}</h1> <router-link to="/list">返回列表页</router-link> </p> </template> <script> export default { name: 'list', data () { return { msg: 'Welcome to Your Vue.js App' }; }, created() { this.ajaxRequest(); }, methods: { ajaxRequest() { const obj = { 'aa': 1 }; Promise.all([this.$store.dispatch('withdary', obj)]).then((res) => { console.log(res); }); } } }; </script>
Zwei: Verwenden Sie die Erweiterung router.meta
Angenommen, es gibt jetzt 3 Seiten, die Anforderungen sind wie folgt:
1. Es gibt standardmäßig Seite A und es ist eine Anfrage erforderlich, damit Seite A angezeigt wird.
2. Seite B springt zu Seite A und Seite A muss nicht erneut angefordert werden.
3. Seite C springt zu Seite A und Seite A muss erneut angefordert werden.
Die Implementierung ist wie folgt:
Setzen Sie das Metaattribut in Route A:
{ path: '/a', name: 'A', component: resolve => require(['@/views/a'], resolve), meta: { keepAlive: true // true 表示需要使用缓存 } }
So wird der gesamte Code unter Router/Index wie folgt:
import Vue from 'vue'; import Router from 'vue-router'; // import HelloWorld from '@/views/HelloWorld';
Vue.use(Router);
const router = new Router({ mode: 'history', // 访问路径不带井号 需要使用 history模式,才能使用 scrollBehavior base: '/page/app', // 配置单页应用的基路径 routes: [ { path: '/', name: 'list', component: resolve => require(['@/views/list'], resolve), // 使用懒加载 meta: { keepAlive: true // true 表示需要使用缓存 } }, { path: '/list', name: 'list', component: resolve => require(['@/views/list'], resolve), // 使用懒加载 meta: { keepAlive: true // true 表示需要使用缓存 false表示不需要被缓存 } }, { path: '/detail', name: 'detail', component: resolve => require(['@/views/detail'], resolve) // 使用懒加载 }, { path: '/a', name: 'A', component: resolve => require(['@/views/a'], resolve), meta: { keepAlive: true // true 表示需要使用缓存 } }, { path: '/b', name: 'B', component: resolve => require(['@/views/b'], resolve) }, { path: '/c', name: 'C', component: resolve => require(['@/views/c'], resolve) } ], scrollBehavior (to, from, savedPosition) { // 保存到 meta 中,备用 to.meta.savedPosition = savedPosition; if (savedPosition) { return { x: 0, y: 0 }; } return {}; } }); export default router;
Set beforeRouteLeave
beforeRouteLeave(to, from, next) { // 设置下一个路由meta to.meta.keepAlive = true; // 让A缓存,不请求数据 next(); // 跳转到A页面 }
In Komponente B lauten alle Codes wie folgt:
<template> <p class="list"> <h1>{{msg}}</h1> <router-link to="/a">返回a页面</router-link> </p> </template> <script> export default { name: 'list', data () { return { msg: 'Welcome to B Page' }; }, created() {}, methods: { }, beforeRouteLeave(to, from, next) { // 设置下一个路由meta to.meta.keepAlive = true; // 让A缓存,不请求数据 next(); // 跳转到A页面 } }; </script>
Set beforeRouteLeave in Komponente C:
Alle Codes in derbeforeRouteLeave(to, from, next) { // 设置下一个路由meta to.meta.keepAlive = false; // 让A不缓存,重新请求数据 console.log(to) next(); // 跳转到A页面 }
c-Komponente lauten wie folgt:
<template> <p class="list"> <h1>{{msg}}</h1> <router-link to="/a">返回a页面</router-link> </p> </template> <script> export default { name: 'list', data () { return { msg: 'Welcome to B Page' }; }, created() {}, methods: { }, beforeRouteLeave(to, from, next) { // 设置下一个路由meta to.meta.keepAlive = false; // 让A不缓存,重新请求数据 console.log(to) next(); // 跳转到A页面 } }; </script>
Alle Codes in der a-Komponente lauten wie folgt:
<template> <p class="hello"> <h1>vue</h1> <h2>{{msg}}</h2> <router-link to="/b">跳转到b页面</router-link> <router-link to="/c">跳转到c页面</router-link> </p> </template> <script> export default { name: 'helloworld', data () { return { msg: 'Welcome to A Page' }; }, methods: { ajaxRequest() { const obj = { 'aa': 1 }; Promise.all([this.$store.dispatch('testUrl', obj)]).then((res) => {}); } }, beforeRouteEnter(to, from, next) { next(vm => { /* 如果 to.meta.savedPosition === undefined 说明是刷新页面或可以叫第一次进入页面 需要刷新数据 如果to.meta.keepAlive === false, 那么说明是需要请求的; 此时需要刷新数据,获取新的列表内容。 否则的话 什么都不做,直接使用 keep-alive中的缓存 */ if (to.meta.savedPosition === undefined) { vm.ajaxRequest(); } if (!to.meta.keepAlive) { vm.ajaxRequest(); } }) } }; </script>
Beachten Sie, dass die b-Komponente nicht re- Daten von der A-Komponente anfordern (einschließlich angeklickter Links und Browser-Zurück-Schaltflächen), die C-Komponente fordert Daten von der A-Komponente an (einschließlich angeklickter Links und Browser-Zurück-Schaltflächen).
Das Obige habe ich für alle zusammengestellt. Ich hoffe, dass es in Zukunft für alle hilfreich sein wird.
Verwandte Artikel:
Mit Koa Projekte über Node.js erstellen
Gibt es eine bessere Lösung als die asynchrone Implementierung mit JavaScript?
Über die Verwendung von Vue-High-Level-Komponenten
Detaillierte Einführung in die Vue-Datenbindung
Über das Codebeispiel für ein Kapitelverzeichnis zur Website-Generierung
So verwenden Sie die Baumansicht im Bootstrap-Framework, um Daten dynamisch zu laden
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Keep-Alive in vue2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Um eine VUE -Komponentenbibliothek zu erstellen, muss die Struktur rund um das Geschäftsszenario gestaltet werden und dem vollständigen Entwicklungs-, Testen- und Freigabungsprozess folgen. 1. Das strukturelle Design sollte nach Funktionsmodulen klassifiziert werden, einschließlich grundlegender Komponenten, Layoutkomponenten und Geschäftskomponenten. 2. Verwenden Sie SCSS- oder CSS -Variablen, um das Thema und den Stil zu vereinen. 3.. Vereinen Sie die Namenspezifikationen und führen Sie Eslint und schöner ein, um den konsistenten Codestil zu gewährleisten. V. 5. Verwenden Sie Vite und andere Tools, um als NPM -Pakete zu packen und Rollupoptions zu konfigurieren. 6. Befolgen Sie die SEMVER -Spezifikation, um Versionen und ChangeLogs beim Veröffentlichen zu verwalten.

1. Die erste Wahl für die Kombination aus Laravel Mysql Vue/React in der PHP -Entwicklungsfrage und der Antwortgemeinschaft ist die erste Wahl für die Kombination aus Laravel Mysql Vue/React aufgrund ihrer Reife im Ökosystem und der hohen Entwicklungseffizienz; 2. Die hohe Leistung erfordert Abhängigkeit von Cache (REDIS), Datenbankoptimierung, CDN und asynchronen Warteschlangen; 3. Die Sicherheit muss mit Eingabefilterung, CSRF -Schutz, HTTPS, Kennwortverschlüsselung und Berechtigungssteuerung erfolgen. V.

In diesem Artikel wurde eine Reihe von Fertigproduktressourcen-Websites der Top-Ebene für VUE-Entwickler und -Lernende ausgewählt. Über diese Plattformen können Sie massive qualitativ hochwertige Vue-Projekte kostenlos online stöbern, lernen und sogar wiederverwenden, wodurch Ihre Entwicklungsfähigkeiten und Projektpraxisfunktionen schnell verbessert werden.

1. PHP führt hauptsächlich Datenerfassung, API -Kommunikation, Geschäftsregel, Cache -Optimierung und Empfehlungsanzeige im KI -Inhaltsempfehlungssystem aus, anstatt eine direkte komplexe Modelltraining durchzuführen. 2. Das System sammelt Benutzerverhalten und Inhaltsdaten über PHP, ruft Back-End-AI-Dienste (wie Python-Modelle) auf, um Empfehlungsergebnisse zu erhalten, und verwendet Redis-Cache, um die Leistung zu verbessern. 3.. Grundlegende Empfehlungsalgorithmen wie die kollaborative Filterung oder die Ähnlichkeit von Inhalten können eine leichte Logik in PHP implementieren, aber groß angelegte Computing hängt immer noch von professionellen AI-Diensten ab. 4. Die Optimierung muss auf Echtzeit, Kaltstart, Vielfalt und Feedback-geschlossene Schleife achten. Zu den Herausforderungen gehören eine hohe Leistung der Parallelität, die Stabilität der Modellaktualisierung, die Einhaltung von Daten und die Interpretierbarkeit der Empfehlungen. PHP muss zusammenarbeiten, um stabile Informationen, Datenbank und Front-End zu erstellen.

Bei der Auswahl eines geeigneten PHP -Frameworks müssen Sie nach den Projektanforderungen umfassend berücksichtigen: Laravel ist für die schnelle Entwicklung geeignet und bietet eloquentorm- und Blade -Vorlagenmotoren, die für den Datenbankbetrieb und das dynamische Formrending bequem sind. Symfony ist flexibler und für komplexe Systeme geeignet. CodeIgniter ist leicht und für einfache Anwendungen mit hohen Leistungsanforderungen geeignet. 2. Um die Genauigkeit von KI-Modellen sicherzustellen, müssen wir mit einem qualitativ hochwertigen Datentraining, einer angemessenen Auswahl von Bewertungsindikatoren (wie Genauigkeit, Rückruf, F1-Wert), regelmäßiger Leistungsbewertung und Modellabstimmung und sicherstellen, dass die Codequalität durch Testen und Integrationstests der Code sichergestellt wird, um die Eingabedaten kontinuierlich zu überwachen. 3.. Viele Maßnahmen sind erforderlich, um die Privatsphäre der Benutzer zu schützen: Verschlüsseln und speichern sensible Daten (wie AES

Die Bereitstellung von VUE -Anwendungen in Produktionsumgebungen erfordert eine Optimierung der Leistung, die Gewährleistung der Stabilität und die Verbesserung der Ladegeschwindigkeit. 1. Verwenden Sie VUECLI oder VITE, um eine Produktionsversion zu erstellen, ein DIST -Verzeichnis zu generieren und die richtigen Umgebungsvariablen festzulegen. 2. Wenn Sie den Verlaufsmodus von Vuerouter verwenden, müssen Sie den Server so konfigurieren, dass er in ideen.html fallback ist. 3. Bereitstellen Sie das DIM -Verzeichnis in Nginx/Apache, netlify/vercel oder kombinieren Sie die CDN -Beschleunigung; 4. Aktivieren Sie die Gzip -Komprimierung und den Browser -Caching -Strategien, um die Belastung zu optimieren. 5. Implementieren Sie faule Ladekomponenten, führen Sie UI-Bibliotheken auf Bedarf ein, aktivieren Sie HTTPS, verhindern Sie XSS-Angriffe, fügen Sie CSP-Headers hinzu und beschränken Sie die SDK-Domain-Namen von Drittanbietern, um die Sicherheit zu verbessern.

1. Die Mainstream-Frameworks des PHP-E-Commerce-Backends sind Laravel (Fast Development, Starke Ecology), Symfony (Unternehmensebene, stabile Struktur), YII (ausgezeichnete Leistung, geeignet für standardisierte Module); 2. Der Technologiestapel muss mit MySQL Redis-Cache, Rabbitmq/Kafka-Nachrichtenwarteschlange, Nginx PHP-FPM und Front-End-Trennung ausgestattet werden. 3.. Eine hohe Parallelitätsarchitektur sollte geschichtet und modular sein, Datenbank -Lesen und Schreiben von Trenn-/Verteilte Datenbank, beschleunigt mit Cache und CDN, asynchrone Verarbeitung von Aufgaben, Teilen von Lastausgleich und Sitzung, allmählich Microservice und eine Überwachung und einen Alarmsystem. 4. Zu den Mehrfachmonetisierungspfaden gehören Produktpreisdifferenz oder Plattformprovision, Standortwerbung, SaaS-Abonnement, maßgeschneiderte Entwicklung und Plug-in-Markt, API-Verbindung

Entwerfen eines PHPCRM-Systems, das sowohl praktisch als auch monetisierbar ist. Erstens müssen wir ein MVP erstellen, das Kernfunktionen wie Kundenmanagement, Vertriebsverfolgung und Automatisierungsprozesse enthält und eine modulare Architektur (z. 2. Senken Sie die Nutzungsschwelle durch intuitives UX-Design (wie Vue.js Front-End), damit Benutzer bereit sind, kontinuierlich zu bezahlen. 3. Verwenden Sie Datenanalyseberichte (z. B. Verkaufswerke, Leistungsanalyse), um Kunden zu helfen, die Effizienz der Entscheidungsfindung zu verbessern, sowie kostenlose grundlegende Funktionen und fortgeschrittene Berichte, um eine Monetarisierung zu erreichen. V. 5. Die Monetarisierung stützt sich nicht nur auf Abonnementgebühren, sondern Vorteile auch durch API-Offenheit, maßgeschneiderte Entwicklung, technische Unterstützung und Plug-in-Marktdiversifiziermarkt
