作者:陈先森的记忆 | 来源:互联网 | 2023-09-17 07:29
一、Vue内置指令
v-text指令:
- 作用:向其所在的节点中渲染文本内容
- 与插值语法的区别:v-text会替换掉节点中的内容,{{xx}}则不会
v-html指令:
1.作用:向指定节点中渲染包含html结构的内容
2.与插值语法的区别:
- v-html会替换掉节点中所有的内容,{{xx}}则不会
- v-html可以识别html结构
3.严重注意:v-html有安全性问题!!!
- 在网站上动态渲染任意HTML是非常危险的,容易导致xss攻击
- 一定要在可信的内容上使用v-html,永不要在用户提交的内容上!
v-cloak指令(没有值):
- 本质是一个特殊的属性,Vue实例创建完毕并接管容器后,会删掉v-cloak属性
- 使用css配合v-可以解决网速慢时页面展示出{{xxx}}的问题
v-once指令:
- v-once所在节点在初次动态渲染后,就被视为静态内容了
- 以后数据的改变不会引起v-once所在结构的更新,可以用于优化性能
v-pre指令:
- 跳过其所在节点的编译过程
- 可利用它跳过:没有使用指令语法、没有使用插值语法的节点,会加快编译
二、自定义指令
需求1:定义一个v-big指令,和v-text功能类似,但会把绑定的数值放大10倍
需求2:定义一个v-fbind指令,和v-bind功能类似,但可以让其所绑定的input元素默认获取焦点
1.定义语法:
(1)局部指令:
new Vue({directives:{指令名:配置对象}
})
或
new Vue({directives{指令名:回调函数}
})
(2)全局指令:
Vue.directive(指令名,配置对象)
或
Vue.directive(指令名,回调函数)
2.配置对象中常用的三个回调:
- bind:指令与元素成功绑定时调用
- inserted:指令所在元素被插入页面时调用
- update:指令所在模板结构被重新解析事调用
3.备注:
- 指令定义时不加v-,但使用时要加v-
- 指令名如果是多个单词,要使用kebab-case(user-name)命令方式,不要用camelCase(userName)命名