Vue基础(19)_Vue内置指令
我们学过的vue内置指令:
v-bind:单向绑定解析表达式,可简写为::xxx
v-model:双向数据绑定
v-for:遍历数组/对象/字符串
v-on:绑定事件监听,可简写为@
v-if:条件渲染(动态控制节点是否存在)
v-else:条件渲染(动态控制节点是否存在)
v-show:条件渲染(动态控制节点是否展示)
其他指令:
v-text指令:
1、作用:向其所在的节点中渲染文本内容。
2、与插值语法的区别:v-text会替换掉节点中的内容,{{xx}}则不会。
v-html指令:
1、作用:向指定节点中渲染包含html结构的内容。
2、与插值语法的区别:
(1).v-html会替换掉节点中所有的内容,{{xx}}则不会。
(2).v-html可以识别html结构。
3、严重注意:v-html有安全性问题!!
(1).在网站上动态渲染任意HTML是非常危险的,容易导致XSS攻击。
(2).一定要在可信的内容上使用v-html,永远不要用在用户提交的内容上。
v-cloak指令(没有值):
1、本质是一个特殊属性,Vue实例创建完毕并接管容器后,会删掉v-cloak属性。
2、使用css配合v-cloak可以解决网速慢时页面展示出{{xxx}}的问题。用法:这个指令保持在元素上直到关联实例结束编译。和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到实例准备完毕。(可以解决当网速过慢时,不让未经解析的模板跑到页面上)
[v-cloak] {display: none;
}<div v-cloak>{{ message }}
</div>
v-once指令:
1.v-once所在节点在初次动态渲染后,就视为静态内容了。
2.以后数据的改变不会引起v-once所在结构的更新。
v-pre指令:
1.跳过其所在节点的编译过程。
2.可利用它跳过那些:没有使用指令语法、和没有使用插值语法的节点,这样会加快编译。简单解释:有该指令(v-pre),vue会不去解析它。
示例:
<!DOCTYPE html>
<html lang="zh"><head><meta charset="UTF-8"><script type="text/javascript" src="../js/vue.js"></script><title>Vue内置指令</title>
</head><body><div id="root"><!-- 差值语法更灵活,能和文本无缝拼接。 --><div>你好,{{name}}</div><!-- v-text会替换掉作用域内的内容(div) ,等同于:<div>{{name}}</div> --><div v-text="name">你好,</div><!-- v-text不会去解析标签,所有内容都当中文本处理 --><div v-text="str"></div><!-- v-html可以识别html结构,解析标签。 --><div v-html="str"></div><!-- v-once只解析一次,后续数据改变也不再更新 --><h3 v-once>初始化的n值是:{{n}}</h3><h3>当前的n值是:{{n}}</h3><button @click="n++">点我n+1</button><!-- 跳过以下标签的编译,vue将不去解析,加快vue编译进程 --><h3 v-pre>李四真帅!</h3><h3 v-pre>李四真帅!</h3><h3 v-pre>李四真帅!</h3></div><script>new Vue({el: '#root',data:{name:'张三',str:'<h3>张三真帅!</h3>',n:10}})</script>
</body></html>