Heim  >  Artikel  >  Web-Frontend  >  Die Vue-Router-Implementierungsseite lädt ein Beispiel für eine Spezialeffektmethode

Die Vue-Router-Implementierungsseite lädt ein Beispiel für eine Spezialeffektmethode

高洛峰
高洛峰Original
2017-02-15 17:35:281913Durchsuche

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(&#39;/users/&#39; + 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.

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