Home  >  Article  >  Web Front-end  >  The uses and differences between v-if and v-show in vue

The uses and differences between v-if and v-show in vue

php中世界最好的语言
php中世界最好的语言Original
2018-05-03 10:08:454310browse

This time I will bring you the usage and differences of v-if and v-show in vue. What are the precautions for using v-if and v-show in vue. The following is a practical case, let's take a look.

The difference between v-if and v-show

v-if will only compile when the conditions are met, while v-show will always compile regardless of whether the conditions are met or not. After compilation, the display and hiding of v-show is just a simple switch of the display attribute of CSS.

That is to say, when using v-if, if the value is false, then the page will not have this html tag generated. And v-show: No matter whether its value is false or true, the html element will exist, just simply switch the display attribute of css.

Usage scenarios

Generally speaking, v-if has a higher switching cost and v-show has a higher initial rendering cost . Therefore, v-show is better if you need to switch frequently, and v-if is better if conditions are unlikely to change at runtime.

In addition

1. The v-if directive can be applied to the template packaging element, but v-show does not support template

2. When applying v-show to a component, there will be a problem because of the priority of the instruction v-else. The solution is to replace v-else with another v-show

 // 错误
  
  

这可能也是一个组件

     // 正确做法      

这可能也是一个组件

Solution to {{message}} crash when loading vue page

Method 1: v-cloak

v-cloak command and When used together with css rules such as [v-cloak]{display:none}, this directive can hide uncompiled Mustache tags until the instance is ready.
The v-cloak command can bind a set of css styles like the css selector and then this set of css will take effect until the instance is compiled.

  eg:
    // 

 不会显示,直到编译结束。     [v-cloak]{       display:none;         }     

       {{ message }}     

Method 2: v-text

In vue we will wrap the data in two curly brackets and then put it in HTML, but inside vue, All double brackets will be compiled into a v-text directive of textNode.

The advantage of using v-text is always better performance, and more importantly, it can avoid FOUC (Flash of Uncompiled Content), which is the problem encountered above.

eg:
  
  
  {{message}}

Supplement:

vue page loading progress bar component

Page loading progress bar initially I saw it on YouTube, and it can be seen on almost all major websites later. It can prevent users from staring at a completely blank page when loading the page, and improve the user experience

But from a development perspective, it is really difficult to grasp the authenticity of this kind of progress bar, because we cannot count the progress until the logic code is loaded, and the progress of the logic code itself cannot be counted. In addition, it is impossible for us to monitor the loading of all resources.

In fact, users don’t care what percentage of your page is loaded, but what they really care about is how long it is until it is fully loaded, and whether the blank page has not been fully loaded or is blank after it is loaded. of. So we don't need to "simulate" a progress bar, use a fake animation effect to simulate loading before the back-end data is returned, and read the progress bar and hide it after the data is returned.

// progress-bar.vue


I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the php Chinese website!

Recommended reading:

JS left list transfer to the right

EL expression in JS to obtain related element parameters

The above is the detailed content of The uses and differences between v-if and v-show in vue. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn