Dieser Artikel stellt Ihnen hauptsächlich das Beispiel der Verwendung von Vue-Router zur Realisierung des Seitenlade-Spezialeffekts vor. Ich glaube, dass er für alle, die ihn benötigen, einen gewissen Referenzwert hat. Werfen Sie einen Blick darauf.
Vorwort
vue-router ist das offizielle Routing-Plug-in von Vue.js. Es ist tief in vue.js integriert und eignet sich zum Erstellen einzelner Seiten Anwendungen. Die Single-Page-Anwendung von Vue basiert auf Routing und Komponenten. Routing wird zum Festlegen von Zugriffspfaden und zum Zuordnen von Pfaden und Komponenten verwendet. Herkömmliche Seitenanwendungen verwenden einige Hyperlinks, um Seitenwechsel und -sprünge zu erreichen. In der Vue-Router-Single-Page-Anwendung wird zwischen Pfaden gewechselt, dh zwischen Komponenten.
Wenn Sie Vue.js und Vue-Router verwenden, um eine Single-Page-Anwendung zu entwickeln. Da es sich bei jeder Seite um eine Vue-Komponente handelt, müssen Sie Daten vom Server anfordern und diese dann von der Vue-Engine auf der Seite rendern lassen.
Hier ist zum Beispiel eine Benutzerprofilseite.
Die Datei user.vue lautet wie folgt:
<template> <p> <h2 v-text="user.name"></h2> <p v-text="user.description"></p> </p> </template> <script> export default{ data(){ return{ user: {} } } } </script>
Fordern Sie während des Animationsübergangs wie folgt Daten vom Server an :
<script> export default{ data(){ return{ user: {} } }, route: { data: function (transition) { this.getUserDetails(transition); } }, methods: { getUserDetails(transition) { this.$http.get('/users/' + this.$route.params.userName) .then(function (response) { this.user = response.data; transition.next(); }); } } } </script>
Auf diese Weise können wir auf die Variable $loadingRouteData zugreifen. Sie können alle Seitenelemente ausblenden und ein Ladeelement wie ein Logo usw. anzeigen.
<p v-if="$loadingRouteData"> <p class="white-widget grey-bg author-area"> <p class="auth-info row"> <p class="timeline-wrapper"> <p class="timeline-item"> <p class="animated-background"> <p class="background-masker header-top"></p> <p class="background-masker header-left"></p> <p class="background-masker header-right"></p> <p class="background-masker header-bottom"></p> <p class="background-masker subheader-left"></p> <p class="background-masker subheader-right"></p> <p class="background-masker subheader-bottom"></p> </p> </p> </p> </p> </p> </p> <p v-if="!$loadingRouteData"> <p> <h2 v-text="user.name"></h2> <p v-text="user.description"></p> </p> </p>
Der geladene Stilcode lautet beispielsweise wie folgt:
.timeline-item { background: #fff; border-bottom: 1px solid #f2f2f2; padding: 25px; margin: 0 auto; } @keyframes placeHolderShimmer{ 0%{ background-position: -468px 0 } 100%{ background-position: 468px 0 } } .animated-background { animation-duration: 1s; animation-fill-mode: forwards; animation-iteration-count: infinite; animation-name: placeHolderShimmer; animation-timing-function: linear; background: #f6f7f8; background: linear-gradient(to right, #eeeeee 8%, #dddddd 18%, #eeeeee 33%); background-size: 800px 104px; height: 40px; position: relative; } .background-masker { background: #fff; position: absolute; } /* Every thing below this is just positioning */ .background-masker.header-top, .background-masker.header-bottom, .background-masker.subheader-bottom { top: 0; left: 40px; right: 0; height: 10px; } .background-masker.header-left, .background-masker.subheader-left, .background-masker.header-right, .background-masker.subheader-right { top: 10px; left: 40px; height: 8px; width: 10px; } .background-masker.header-bottom { top: 18px; height: 6px; } .background-masker.subheader-left, .background-masker.subheader-right { top: 24px; height: 6px; } .background-masker.header-right, .background-masker.subheader-right { width: auto; left: 300px; right: 0; } .background-masker.subheader-right { left: 230px; } .background-masker.subheader-bottom { top: 30px; height: 10px; } .background-masker.content-top, .background-masker.content-second-line, .background-masker.content-third-line, .background-masker.content-second-end, .background-masker.content-third-end, .background-masker.content-first-end { top: 40px; left: 0; right: 0; height: 6px; } .background-masker.content-top { height:20px; } .background-masker.content-first-end, .background-masker.content-second-end, .background-masker.content-third-end{ width: auto; left: 380px; right: 0; top: 60px; height: 8px; } .background-masker.content-second-line { top: 68px; } .background-masker.content-second-end { left: 420px; top: 74px; } .background-masker.content-third-line { top: 82px; } .background-masker.content-third-end { left: 300px; top: 88px; }
Auf diese Weise haben Sie beim Laden die Wirkung von Vue-Router. Sie können den obigen Code in eine separate Komponente schreiben und darauf verweisen, wo immer Sie ihn verwenden.
Endlich
Dies ist nur ein einfaches Tutorial über die von Vue-Router geladenen Komponenten. Tatsächlich kann es an vielen Stellen verbessert werden,
VueJobs.com
Wenn Sie ein Front-End-Ingenieur sind, der sich für Vue.js interessiert, können Sie diese Website durchsuchen, um mehr über ausländische Anforderungen für Vue-Entwickler zu erfahren.
Weitere Vue-Router-Implementierungsseiten und Beispiele für Spezialeffektmethoden finden Sie auf der chinesischen PHP-Website.