做者:John Au-Yeung
译者:前端小智
来源:websystemer
点赞再看,养成习惯本文
GitHub
https://github.com/qq44924588... 上已经收录,更多往期高赞文章的分类,也整理了不少个人文档,和教程资料。欢迎Star和完善,你们面试能够参照考点复习,但愿咱们一块儿有点东西。html
Vue 是一个易于使用的Web应用程序框架,可用于开发交互式前端应用程序。在本文中,咱们将介绍指令的修饰符和一些有用的模板简写指令。前端
修饰符用于以特殊方式绑定指令。vue
例如,v-on
指令的.prevent
修饰符将在设置为该值的事件处理函数上自动运行event.preventDefault
。git
.prevent
修饰符用法以下:github
<form v-on:submit.prevent="onSubmit"> ... </form>
这样,当运行onSubmit
事件以前就会运行event.preventDefault()
。web
其余事件修饰符包括:面试
.stop
在运行其他事件处理程序代码以前运行event.stopPropagation()
。浏览器
.capture
让咱们捕获事件。 也就是说,当咱们在内部元素中运行事件处理程序时,相同的事件处理程序也将在外部元素中运行。微信
例如,假设 src/index.js
中的内容为:app
var vm=new Vue({ el:"#app", data:{ }, methods:{ show:function(){ console.log("这是app的方法") }, show2:function(){ console.log("这是app2的方法") }, show3:function(){ console.log("这是app3的方法") } } })
以及index.html
中内容为:
<div id="app" v-on:click="show"> 1 <div id="app2" v-on:click.capture="show2"> 2 <div id="app3" v-on:click="show3"> 3 </div> </div> </div>
此处的代码由于div2有capture关键字,因此此时冒泡的顺序发生了改变
正常状况下:
点击div3一层一层冒泡,先div3=》div2=》div1
使用了关键字:
点击div3时,先div2=》div3=》div1
就是说只要存在一个capture关键字,就会影响整个嵌套的执行
.self
修饰符的做用是:只当在 event.target 是当前元素自身时触发处理函数,即事件不是从内部元素触发的 。
.once
修饰符的做用是:点击事件将只会触发一次
passive 做用
详情请参考MDN(https://developer.mozilla.org...)中关于addEventListener
中的第三个参数;表示 listener
永远不会调用 preventDefault()
。若是 listener
仍然调用了这个函数,客户端将会忽略它并抛出一个控制台警告。
passive
这个修饰符会执行默认方法。大家可能会问,明明默认执行为何会设置这样一个修饰符。这就要说一下这个修饰符的本意了。
浏览器只有等内核线程执行到事件监听器对应的 JS 代码时,才能知道内部是否会调用preventDefault
函数来阻止事件的默认行为,因此浏览器自己是没有办法对这种场景进行优化的。这种场景下,用户的手势事件没法快速产生,会致使页面没法快速执行滑动逻辑,从而让用户感受到页面卡顿。
通俗点说就是每次事件产生,浏览器都会去查询一下是否有preventDefault
阻止该次事件的默认动做。咱们加上passive就是为了告诉浏览器,不用查询了,咱们没用preventDefault
阻止默认动做。
这里通常用在滚动监听,@scoll
,@touchmove
。由于滚动监听过程当中,移动每一个像素都会产生一次事件,每次都使用内核线程查询prevent
会使滑动卡顿。咱们经过passive
将内核线程查询跳过,能够大大提高滑动的流畅度。
注:passive和prevent冲突,不能同时绑定在一个监听器上。
v-model
主要有三个修饰符:
.lazy
修饰符
<input v-model.lazy="msg" >
添加了lazy
后,输入框中的数据会在change
事件中同步,不会随着输入同时同步。
.number
修饰符
首先谁明这个number
并非限制用户的输入,而是将用户输入的数据尝试绑定为 js 中的 number
类型
举个例子,若是用户输入300
,data 中绑定的实际上是'300'(string),添加 number
指令后能够获得 300(number)
的绑定结果。而若是用户输入的不是数字,这个指令并不会产生任何效果。
.trim
修饰符
trim
能够用来过滤先后的空格
Vue 中的一些指令能够简写。
咱们能够将v-bind
简写为:
,例如:
<a v-bind:href="url">Link</a>
能够写成
<a :href="url">Link</a>
若是使用Vue 2.6.0或更高版本
,咱们还可使用动态参数:
<a :[key]="url">Link</a>
咱们能够将v-on
简写为@
,例如:
<a v-on:click="onClick">Click me</a>
能够写成
<a @click="onClick">Click me</a>
一样,从Vue 2.6.0
开始,咱们也可使用动态参数:
<a @[event]="onClick">Click me</a>
一些指令具备与它们关联的修饰符。v-on
指令具备多个修饰符,用于控制事件处理程序的调用方式。
另外,v-model
指令也具备一些修饰符,可以让咱们将输入自动转换为数字或修剪输入中的空格。
v-on
和v-bind
也有简写形式。 v-on
:能够简写为@
,而v-bind
:能够缩写为:
。
指令参数也可使用简写。
代码部署后可能存在的BUG无法实时知道,过后为了解决这些BUG,花了大量的时间进行log 调试,这边顺便给你们推荐一个好用的BUG监控工具 Fundebug。
https://www.websystemer.no/vu...
文章每周持续更新,能够微信搜索「 大迁世界 」第一时间阅读和催更(比博客早一到两篇哟),本文 GitHub https://github.com/qq449245884/xiaozhi 已经收录,整理了不少个人文档,欢迎Star和完善,你们面试能够参照考点复习,另外关注公众号,后台回复福利,便可看到福利,你懂的。