Heim > Artikel > Web-Frontend > Verhindern Sie, dass Vuejs während des Parsens flackern
---## Verhindern Sie, dass Vuejs während des Parsens flackern ##
Grund:
Bei der Entwicklung mit VueJS und AngularJS stoßen Sie häufig auf Ausdrücke ({{ express }}) oder Module (div), die in Browsern wie Chrome angezeigt werden, die schnell analysieren können. Bei diesem Problem wartet JavaScript beim Betrieb von DOM darauf, dass der DOM-Ladevorgang abgeschlossen ist (DOM bereit). Bei VueJS und AngularJS analysieren sie erneut die HTML-Ansichtsvorlage, nachdem das DOM bereit ist. Bei schnellen Browsern wie Chrome ist daher ein Flackern zu beobachten. Bei Browsern wie IE7 und 8 mit etwas langsamerer Analyse tritt dieses Problem in den meisten Fällen nicht auf.
Lösung:
V-Cloak und NG-Cloak werden für uns in VueJS und AngularJS bereitgestellt, um Flackern zu verhindern. Gleichzeitig können wir auch den Bing-Text ändern ({{ Express }}) Implementiert für v-bind, ng-bind zu vermeiden.
Im Folgenden wird Vuejs als Beispiel genommen:
<code>#v-cloak 用法: 这个指令保持在元素上直到关联实例结束编译。和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到实例准备完毕。 示例:</code>
<span style="color: #008080;">1</span> <span style="color: #800000;">[v-cloak] </span>{ <span style="color: #008080;">2</span> <span style="color: #ff0000;"> display</span>:<span style="color: #0000ff;"> none</span>; <span style="color: #008080;">3</span> } <span style="color: #008080;">4</span> <span style="color: #008080;">5</span> <span style="color: #800000;"><div v-cloak> </span><span style="color: #008080;">6</span> {<span style="color: #ff0000;">{ message </span>}<span style="color: #800000;">} </span><span style="color: #008080;">7</span> <span style="color: #800000;"></div></span>
<code><div> 不会显示,直到编译结束。 原理: 带有v-clock的的元素设置为display:none,隐藏掉,在等到vue解析到带有v-clock的节点时候,会把attribute和class同时remove掉,这样就可以实现防止节点的闪烁。 实例:</code>
<span style="color: #000000;">//example1: </span><span style="color: #0000ff;"><</span><span style="color: #800000;">span</span><span style="color: #0000ff;">></span>{{price}}<span style="color: #0000ff;"></</span><span style="color: #800000;">span</span><span style="color: #0000ff;">></span><span style="color: #000000;"> //example2: </span><span style="color: #0000ff;"><</span><span style="color: #800000;">span </span><span style="color: #ff0000;">v-bind</span><span style="color: #0000ff;">="price"</span><span style="color: #0000ff;">></</span><span style="color: #800000;">span</span><span style="color: #0000ff;">></span><span style="color: #000000;"> //example3: </span><span style="color: #0000ff;"><</span><span style="color: #800000;">span </span><span style="color: #ff0000;">v-cloak</span><span style="color: #0000ff;">></span>{{price}}<span style="color: #0000ff;"></</span><span style="color: #800000;">span</span><span style="color: #0000ff;">></span>
<code> 上例子2和例子3实现的效果是一样的,而例子1在vuejs解析{{price}}之前,用户是可以看到"{{price}}"这个字符串的。而例子2和例子3不会有这种闪烁的情况。</code>