Vielleicht ist das eine triviale Frage.
Wenn ich also meine vuejs-Anwendung im Browser ausführe, wird die Download-Geschwindigkeit gedrosselt (auf niedrige Verbindung eingestellt). Ich habe eine unvollendete Ausgabe der Vue-Syntax im Browser erhalten.
Ich weiß, wir können dies austricksen, indem wir das Laden des Bildes anzeigen, bevor die gesamte Seite geladen wurde, aber gibt es eine beste Lösung, um dies zu beheben?
javascript
vue.js
Antoniputra
quelle
quelle
[v-cloak] { display: none; } <div v-cloak> {{ message }} </div>
es bedeutet, ich solltev-cloak
jedem Element , das ich verbergen möchte, ein Attribut hinzufügen ?App
sollte alles in Ordnung seinv-cloak
, als ob dies die Standardeinstellung sein sollte und wenn jemand das wirklich zeigen wollte,{{ }}
sollte er so etwas wie verwendenv-uncloak
.display:none
auf vorhandenem HTML ist eine schlechte Flagge für SEO. Ich denke, es ist vielleicht besser, eine Art Overlay zu verwenden, bis die Seite geladen ist.Ich habe den folgenden Codepen angehängt. Sie können den Unterschied mit und ohne sehen
v-cloak
.http://codepen.io/gurghet/pen/PNLQwy
quelle
v-cloak
Attribut.Wie von anderen vorgeschlagen, ist die Verwendung von V-Cloak die richtige Lösung. Wie @ DelightedD0D erwähnt hat, ist es jedoch klobig. Eine einfache Lösung besteht darin, dem Pseudo-Selektor
::before
derv-cloak
Direktive etwas CSS hinzuzufügen .In Ihrer sass / less-Datei etwas in der Art von
Natürlich müssen Sie einen gültigen und zugänglichen Pfad zum Loader-Image angeben. Es wird so etwas wie rendern.
Ich hoffe es hilft.
quelle
Mit der
v-cloak
Direktive können Sie nicht kompilierte Schnurrbartbindungen ausblenden, bis die Kompilierung der vue-Instanz abgeschlossen ist. Sie müssen den CSS-Block verwenden, um ihn bis zur Kompilierung auszublenden.HTML:
CSS:
Dies
<div>
ist erst sichtbar, wenn die Kompilierung abgeschlossen ist.Sie können diesen Link sehen. Elemente während des Ladens ausblenden,
v-cloak
um das Verständnis zu verbessern.quelle
Fügen Sie der HTML-Datei keine vuejs-Syntax hinzu:
In Ihrem Haupt-JavaScript können Sie:
Weitere Informationen finden Sie in der vuetify-Webpack-Vorlage .
Eine andere Lösung ist zu verwenden:
Mit:
quelle
Sie können jedes Rendering in eine einfache Wrapper- Komponente verschieben . Die VueJS-Initialisierung, z. B. new Vue (....), sollte außer dieser einzelnen Wrapper-Komponente kein HTML enthalten.
Abhängig vom Setup können Sie sogar festlegen,
<app>Loading...</app>
wo die App die Wrapper-Komponente ist, wobei HTML oder Text dazwischen geladen wird, der dann beim Laden ersetzt wird.quelle
quelle
Verwenden
<v-cloak>
Sie diese Option, um Ihren Vue-Code auszublenden, bevor Sie Daten an relevante Stellen binden. Es befindet sich tatsächlich an einer Stelle in der Vue-Dokumentation, an der es möglicherweise jemandem entgeht, wenn Sie nicht danach suchen oder es gründlich lesen.quelle
Ja, Sie können verwenden
v-cloak
, ich mag Spinkit verwenden , ist eine großartige Bibliothek mit nur CSS, überprüfen Sie ein einfaches Beispiel:Link: - http://tobiasahlin.com/spinkit/
quelle
Ich bevorzuge die Verwendung
v-if
mit einer berechneten Eigenschaft, die prüft, ob meine Daten bereit sind, wie folgt:Auf diese Weise ist es einfacher, einen Loader nur anzuzeigen, wenn die Daten nicht bereit sind (using
v-else
).In diesem speziellen Fall
v-if="variableName"
würde es auch funktionieren, aber es kann kompliziertere Szenarien geben.quelle
Wenn Sie V-Cloak in einer Ansicht mit mehreren Laravel Blade-Dateien verwenden und dies nicht funktioniert, versuchen Sie, den V-Cloak für die übergeordnete Blade-Datei und nicht für eine untergeordnete Blade-Datei zu verwenden.
quelle