![Vue.js 3.x+Element Plus从入门到精通(视频教学版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/262/52842262/b_52842262.jpg)
2.2 常用的内置模板指令
顾名思义,内置指令就是Vue内置的一些指令,它针对一些常用的页面功能提供了以指令来封装的使用形式,以HTML属性的方式使用。例如前面章节讲述的v-bind和v-html指令,本节将继续讲解其他的内置指令。
2.2.1 v-on
v-on指令用于监听DOM事件,当触发时运行一些JavaScript代码。v-on指令的表达式可以是一般的JavaScript代码,也可以是一个方法的名字或者方法调用语句。
在使用v-on指令对事件进行绑定时,需要在v-on指令后面接上事件名称,例如click、mousedown、mouseup等事件。
【例2.4】 v-on指令(源代码\ch02\2.4.html)。
![](https://epubservercos.yuewen.com/84B75B/31397910203685306/epubprivate/OEBPS/Images/Figure-P28_123720.jpg?sign=1739267868-OXI2Q14R8RvgkTWLdm4hsSGKZIR9Y1n5-0-5044e250739a33f89b75e44d596a6d10)
在Chrome浏览器中运行程序,单击“+1”按钮或“-1”按钮,即可实现数字的递增和递减;单击“古诗”按钮,触发click事件,调用say()函数,页面效果如图2-4所示。
在Vue应用中许多事件处理逻辑会很复杂,所以直接把JavaScript代码写在v-on指令中是不可行的,此时就可以使用v-on接收一个方法,把复杂的逻辑放到这个方法中。
![](https://epubservercos.yuewen.com/84B75B/31397910203685306/epubprivate/OEBPS/Images/Figure-P29_63147.jpg?sign=1739267868-aS2sUSKz1uzLla30bwkxpQwtRV8GqDCs-0-9582e0e12b7f7a07c43ad37d6ef105ce)
图2-4 v-on指令
使用v-on指令接收的方法名称也可以传递参数,只需要在methods中定义方法时说明这个形参,即可在方法中获取。
2.2.2 v-text
v-text指令用来更新元素的文本内容。如果只需要更新部分文本内容,那么可使用插值来完成。
【例2.5】 v-text指令(源代码\ch02\2.5.html)。
![](https://epubservercos.yuewen.com/84B75B/31397910203685306/epubprivate/OEBPS/Images/Figure-P29_123724.jpg?sign=1739267868-2xScRDhrq8PcmL1476NYzBXQkNNoPbM7-0-e0e5212272601bde07c4ad9fe951c334)
在Chrome浏览器中运行程序,结果如图2-5所示。
![](https://epubservercos.yuewen.com/84B75B/31397910203685306/epubprivate/OEBPS/Images/Figure-P29_63149.jpg?sign=1739267868-OJ5lOU5Y0KDtbcuY6DZRjxRwn8jibBhf-0-e7bce87761b4944a09cca7042621394a)
图2-5 v-text指令
2.2.3 v-once
v-once指令不需要表达式。v-once指令只渲染元素和组件一次,随后的渲染,使用了此指令的元素、组件及其所有的子节点,都会当作静态内容并跳过,这可以用于优化更新性能。
例如,在下面的示例中,当修改input输入框的值时,使用了v-once指令的p元素,不会随之改变,而第二个p元素随着输入框的内容而改变。
【例2.6】 v-once指令(源代码\ch02\2.6.html)。
![](https://epubservercos.yuewen.com/84B75B/31397910203685306/epubprivate/OEBPS/Images/Figure-P30_123726.jpg?sign=1739267868-fRIlhR9Ur1ErT9apzG9PXggxvqyNaNsJ-0-27508abf169ce13eca52a887a0286b1e)
在Chrome浏览器中运行程序,然后在输入框中输入“香蕉”,可以看到,添加v-once指令的p标签并没有任何变化,效果如图2-6所示。
![](https://epubservercos.yuewen.com/84B75B/31397910203685306/epubprivate/OEBPS/Images/Figure-P30_123728.jpg?sign=1739267868-ySo6gPVgHVJNwMjGZrGARM1yY8Nc9msO-0-ad1760cad4e5c43600a3df92a6541514)
图2-6 v-once指令
2.2.4 v-pre
v-pre指令不需要表达式,用于跳过这个元素和它的子元素的编译过程。可以使用v-pre指令来显示原始Mustache标签。
【例2.7】 v-pre指令(源代码\ch02\2.7.html)。
![](https://epubservercos.yuewen.com/84B75B/31397910203685306/epubprivate/OEBPS/Images/Figure-P30_123729.jpg?sign=1739267868-b94UjiScFlQUEX4WVscHBGMCje85NxGq-0-115826bf704e98f71a91ab55a5dedf16)
在Chrome浏览器中运行程序,结果如图2-7所示。
![](https://epubservercos.yuewen.com/84B75B/31397910203685306/epubprivate/OEBPS/Images/Figure-P31_123732.jpg?sign=1739267868-hMCtm8G8yC30hRM1TXXNMpMe5SOwlLL8-0-4fafab4a7af9e1cdca3dec39f66380b6)
图2-7 v-pre指令
2.2.5 v-cloak
v-cloak指令不需要表达式。这个指令保持在元素上直到关联实例结束编译。与CSS规则(如[v-cloak]{display:none})一起使用时,这个指令可以隐藏未编译的Mustache标签直到实例准备完毕。
【例2.8】 v-cloak指令(源代码\ch02\2.8.html)。
![](https://epubservercos.yuewen.com/84B75B/31397910203685306/epubprivate/OEBPS/Images/Figure-P31_123734.jpg?sign=1739267868-wu0uf6HGTyvvTYsD4DcqQQKMBQF5GU28-0-65ab3f6e324d305d1e638cb6e94ff711)
在Chrome浏览器中运行程序,结果如图2-8所示。
![](https://epubservercos.yuewen.com/84B75B/31397910203685306/epubprivate/OEBPS/Images/Figure-P32_63698.jpg?sign=1739267868-vSEhwJsLoDgvpHZpCcxKCKMfutEaUwzB-0-e22463518defbc261c56943e4728068b)
图2-8 v-cloak指令