c'est peut-être une question triviale.
Ainsi, lorsque j'exécute mon application vuejs sur un navigateur, active la vitesse de téléchargement de la limitation (définit une connexion faible). J'ai obtenu une sortie de syntaxe vue inachevée dans le navigateur.
Je sais que nous pouvons résoudre ce problème en affichant l' image de chargement avant que la page entière ne soit chargée, mais y a-t-il la meilleure solution pour résoudre ce problème?
javascript
vue.js
Antoniputra
la source
la source
[v-cloak] { display: none; } <div v-cloak> {{ message }} </div>
cela signifie, je devrais ajouter unv-cloak
attribut dans chaque élément que je souhaite cacher?App
div principal devrait être bienv-cloak
devrait être la valeur par défaut et que si quelqu'un voulait vraiment montrer le,{{ }}
il devrait utiliser quelque chose commev-uncloak
.display:none
sur le HTML existant, est un mauvais indicateur pour le référencement. Je pense qu'il vaut peut-être mieux utiliser une sorte de superposition jusqu'à ce que la page se charge.J'ai joint le codepen suivant. Vous pouvez voir la différence avec et sans
v-cloak
.http://codepen.io/gurghet/pen/PNLQwy
la source
v-cloak
attribut.Comme suggéré par d'autres, l'utilisation de v-cloak est une solution appropriée. Cependant, comme @ DelightedD0D l'a mentionné, c'est maladroit. La solution simple est d'ajouter du CSS dans le pseudo sélecteur
::before
dev-cloak
directive.Dans votre fichier sass / less, quelque chose du genre
Bien sûr, vous devez fournir un chemin valide et accessible vers l'image du chargeur. Cela rendra quelque chose comme.
J'espère que ça aide.
la source
En utilisant la
v-cloak
directive, vous pouvez masquer les liaisons de moustache non compilées jusqu'à ce que l'instance vue soit terminée. Vous devez utiliser le bloc CSS pour le masquer jusqu'à ce qu'il soit compilé.HTML:
CSS:
Cela
<div>
ne sera pas visible tant que la compilation ne sera pas terminée.Vous pouvez voir ce lien Masquer les éléments lors du chargement en utilisant
v-cloak
pour une meilleure compréhension.la source
N'incluez aucune syntaxe vuejs dans le fichier HTML:
Dans votre JavaScript principal, vous pouvez:
Consultez le modèle de Webpack vuetify pour référence.
Une autre solution consiste à utiliser:
Avec:
la source
Vous pouvez déplacer n'importe quel rendu vers un simple composant wrapper . L'initialisation de VueJS, par exemple, new Vue (....) ne doit contenir aucun HTML en dehors de ce composant wrapper unique.
Selon la configuration, vous pourriez même avoir
<app>Loading...</app>
où app est le composant wrapper avec tout HTML de chargement ou texte entre les deux qui est ensuite remplacé lors du chargement.la source
la source
Utilisez
<v-cloak>
pour masquer votre code Vue avant de lier les données à des endroits pertinents. Il est en fait situé à un endroit de la documentation Vue que n'importe qui pourrait le manquer à moins que vous ne le cherchiez ou que vous ne le lisiez attentivement.la source
Oui, vous pouvez utiliser
v-cloak
, j'aime utiliser spinkit , c'est une excellente bibliothèque avec uniquement CSS, vérifiez un exemple simple:Lien: - http://tobiasahlin.com/spinkit/
la source
Je préfère utiliser
v-if
avec une propriété calculée qui vérifie si mes données sont prêtes, comme ceci:De cette façon, il est plus facile d'afficher un chargeur uniquement si les données ne sont pas prêtes (utilisation
v-else
).Dans ce cas particulier,
v-if="variableName"
cela fonctionnerait également, mais il peut y avoir des scénarios plus compliqués.la source
Pour ceux qui utilisent v-cloak dans une vue avec plusieurs fichiers Laravel Blade et que cela ne fonctionne pas, essayez d'utiliser le v-cloak sur le fichier lame parent plutôt que dans n'importe quel fichier lame enfant.
la source