v-cloak
描述:v-cloak不需要表达式,在Vue实例结束编译时从绑定的html元素中移除,通常和css的display:none;配合使用。当网速慢时,Vue没有加载出来时会出现“{{xxx}}”的字样,直到vue创建完实例,DOM才会被替换,所以屏幕会出现闪烁,还需要在css代码中加上:[v-cloak]:{display: none!important;} 联合使用即可,但在工程化的项目中使用webpack和vue-router时,项目的vue结构只有一个空的div,剩余的内容都是由路由去挂载完成的,所以不在需要使用,v-cloak只适用于简单的项目中
<!DOCTYPE html> <html> <head> <title>Vue --- 内置指令</title> <script type="text/javascript" src="https://unpkg.com/vue/dist/vue.min.js"></script> <style type="text/css"> [v-cloak]:{ display: none!important; } </style> </head> <body> <div id="app" v-cloak> {{message}} </div> <script type="text/javascript"> var app = new Vue({ el:'#app', data:{ message:'这是一段话' } }) </script> </body> </html>
v-once
描述:不需要表达式的指令,作用是定义它的元素或组件只渲染一次,包括元素或组件的所有子节点。首次渲染后,不再随数据的变化重新渲染,将被视为静态内容,改变message不会因为改变而使页面数据发生变动。
<!DOCTYPE html> <html> <head> <title>Vue --- 内置指令</title> <script type="text/javascript" src="https://unpkg.com/vue/dist/vue.min.js"></script> </head> <body> <div id="app" > <span v-once>{{message}}</span> <div v-once> <span>{{message}}</span> </div> </div> <script type="text/javascript"> var app = new Vue({ el:'#app', data:{ message:'这是一段话' } }) </script> </body> </html>
v-if v-else-if v-else
描述:和js一样作为判断条件时使用
<body> <div id="app"> <div v-if="state === 1">state等于1时</div> <div v-else-if="state === 2">state等于2时</div> <div v-else>其他</div> </div> <script type="text/javascript"> var app = new Vue({ el:'#app', data:{ state:1 } }) </script> </body>
template
描述:可以使用template复用代码,(加入key属性将不会复用,输入的内容也会被删除)
<body> <div id="app"> <template v-if="types === 'name'"> <label>用户名:</label> <input placeholder="使用用户名方式" key = "name-input"> </template> <template v-else> <label>邮箱:</label> <input placeholder="使用邮箱方式" key = "eamil-input"> </template> <button @click="show">切换方式</button> </div> <script type="text/javascript"> var app = new Vue({ el:'#app', data:{ types:'name' }, methods:{ show:function () { this.types = this.types === 'name' ? 'email' : 'name' ; } } }) </script> </body>