onClickBtn (msg) {
console.log(msg)
},
onMousedown (event) {
const mosueMsgMap = {
0: ‘鼠标左键’,
1: ‘鼠标中键’,
2: ‘鼠标右键’
}
console.log(‘点击了’, mosueMsgMap[event.button])
}
}
}
没有带鼠标回来,中键点击暂时不能演示,后续会补上
mouse.gif
11 .left
同上例子,监听鼠标左键点击
12 .right
同上例子,监听鼠标右键点击
13 .middle
同上例子,监听鼠标中键点击
表单相关修饰符
=======
14 .trim
对于输入的内容,希望可以
过滤首尾空格
应该怎么做呢?
用户名:{{ name }}
用户名2:{{ name2 }}
export default {
name: ‘trim’,
data () {
return {
name: ‘’,
name2: ‘’,
}
},
watch: {
name (newVal) {
console.log('----${newVal}----'
)
},
name2 (newVal) {
console.log('----${newVal}----'
)
},
}
}
.trim修饰符可以很方便做到
trim.gif
15 .lazy
v-model
大家都很熟悉,默认情况下,每次input事件
触发的时候都会将输入框的值与其绑定的数据进行实时同步。但是如果想要实现光标离开的时候再更新数据如何实现呢?
思路1: 绑定change事件,在事件回调中手动获取target的值
思路2: 直接使用.lazy
修饰符即可达到效果
无.lazy: {{ text }}
.lazy: {{ text2 }}
export default {
name: ‘lazy’,
data () {
return {
text: ‘’,
text2: ‘’
}
}
}
可以看到添加了.lazy修饰符之后,第二个输入框输入的值不会实时反应在下面,而是光标离开实,text2
的数据才更新了
lazy.gif
16 .number
我们知道
input
输入框的type
哪怕是number
得到的值的类型也是string
,如果我们想直接拿到number
类型的数据,有不想麻烦的手动转换应该怎么办呢?
无.number
type:text .number
type:number .number
export default {
name: ‘lazy’,
data () {
return {
number: 0,
number1: ‘’,
number2: ‘’,
}
},
watch: {
number (newVal) {
console.log(typeof newVal, newVal)
},
number1 (newVal) {
console.log(typeof newVal, newVal)
},
number2 (newVal) {
console.log(typeof newVal, newVal)
},
}
}
-
第一个输入框的类型是number,但是得到的值是string
-
第二个输入框的类型是text,但是添加了number修饰符,得到的值可以是number(如果这个值无法被
parseFloat()
解析,则会返回原始的值。) -
第三个输入框的类型是number,最后得到的值也是number
number.gif
系统修饰符
=====
当点击事件或者键盘事件需要系统键同时按下才触发时
.ctrl
、.alt
、.shift
、.meta
可以帮大忙噢!
如下代码
-
全局监听keydown事件,尝试看
.ctrl
、.alt
、.shift
、.meta
是否被按下 -
分别给四个按钮加上
.ctrl
、.alt
、.shift
、.meta
修饰符并配合点击事件,验证是否同时按下指定按键,再点击才会生效
注明:电脑ctrl键 + 点击估计和浏览器快捷配置冲突了,导致没触发
{{ msg }}
<button @click.ctrl=“onClickButon(‘ctrl’)”>ctrl
<button @click.alt=“onClickButon(‘alt’)”>alt
<button @click.shift=“onClickButon(‘shift’)”>shift
<button @click.meta=“onClickButon(‘meta’)”>meta
export default {
name: ‘system’,
data () {
return {
msg: ‘’
}
},
mounted () {
this.onListenSystemKeyDown()
},
methods: {
onListenSystemKeyDown () {
document.addEventListener(‘keydown’, (event) => {
let msg = ‘按下了’
if (event.ctrlKey) {
msg += ‘ctrl键’
} else if (event.altKey) {
msg += ‘alt键’
} else if (event.shiftKey) {
msg += ‘shift键’
} else if (event.metaKey) {
msg += ‘meta键’
} else {
msg += ‘其他键’
}
this.msg = msg
}, false)
},
onClickButon (key) {
console.log(只有同时按下${key}键,点击事件才会发生
)
}
}
}
system.gif
17 .ctrl
仅在按下ctrl按键时才触发鼠标或键盘事件的监听器,详细例子请看上面
18 .alt
仅在按下alt按键时才触发鼠标或键盘事件的监听器,详细例子请看上面
19 .shift
仅在按下shift按键时才触发鼠标或键盘事件的监听器,详细例子请看上面
20 .meta
仅在按下meta按键时才触发鼠标或键盘事件的监听器,详细例子请看上面
21 .exact
严格来说这
.exact
不属于系统修饰符,只是上面例子的写法有一个现象,同时按下几个系统修饰键(例如alt和shift)既可以触发.alt
也可以触发.shift
。
还是用上面的例子,看一下下面的gif, 此时我同时按下了alt和shift,对应的两个事件都可以触发
system2.gif
-
只想某个系统修饰键按下时才触发点击
-
没有任何系统修饰符被按下的时候才触发点击
要实现上面的需求.exact
就派上用场了,用上面的例子稍作改造
{{ msg }}
<button @click.ctrl.exact=“onClickButon(‘ctrl’)”>ctrl
<button @click.alt.exact=“onClickButon(‘alt’)”>alt
<button @click.shift.exact=“onClickButon(‘shift’)”>shift
<button @click.meta.exact=“onClickButon(‘meta’)”>meta
<button @click.exact=“onClickButon(‘非系统键’)”>非系统键
export default {
name: ‘extra’,
data () {
return {
msg: ‘’
}
},
mounted () {
this.onListenSystemKeyDown()
},
methods: {
onListenSystemKeyDown () {
document.addEventListener(‘keydown’, (event) => {
let msg = ‘按下了’
if (event.ctrlKey) {
msg += ‘ctrl键’
} else if (event.altKey) {
msg += ‘alt键’
} else if (event.shiftKey) {
msg += ‘shift键’
} else if (event.metaKey) {
msg += ‘meta键’
} else {
msg += ‘其他键’
}
this.msg = msg
}, false)
},
onClickButon (key) {
console.log(只有同时按下${key}键,点击事件才会发生
)
}
}
}
extra.gif
按键修饰符
=====
在监听键盘事件时,我们经常需要检查详细的按键再执行对应的逻辑,vue也为我们内置了至少11+的按键修饰符。
如下代码,我们分别给enter
、tab
、delete
等按键指定了keydown
事件,当在指定的输入框中按下指定的键盘,会打印出enter
、tab
、delete
等,其他按键在输入框中无法触发该console
enter:
<input type=“text” @keydown.enter=“onKeydown(‘enter’)”>
tab:
<input type=“text” @keydown.tab=“onKeydown(‘tab’)”>
delete:
<input type=“text” @keydown.delete=“onKeydown(‘delete’)”>
esc:
<input type=“text” @keydown.esc=“onKeydown(‘esc’)”>
space:
<input type=“text” @keydown.space=“onKeydown(‘space’)”>
up:
<input type=“text” @keydown.up=“onKeydown(‘up’)”>
down:
<input type=“text” @keydown.down=“onKeydown(‘down’)”>
left:
<input type=“text” @keydown.left=“onKeydown(‘left’)”>
right:
<input type=“text” @keydown.right=“onKeydown(‘right’)”>
page-down:
<input type=“text” @keydown.page-down=“onKeydown(‘page-down’)”>
page-up:
<input type=“text” @keydown.page-up=“onKeydown(‘page-up’)”>
export default {
name: ‘keyModifiers’,
methods: {
onKeydown (keyName) {
console.log(keyName)
}
}
}
key-modifiers.gif
22 .enter
在按下enter按键时才触发鼠标或键盘事件的监听器,详细例子请看上面
23 .tab
在按下tab按键时才触发鼠标或键盘事件的监听器,详细例子请看上面
24 .delete
在按下delete按键时才触发鼠标或键盘事件的监听器,详细例子请看上面
25 .esc
在按下esc按键时才触发鼠标或键盘事件的监听器,详细例子请看上面
26 .space
在按下space按键时才触发鼠标或键盘事件的监听器,详细例子请看上面
27 .up
在按下up按键时才触发鼠标或键盘事件的监听器,详细例子请看上面
28 .down
在按下down按键时才触发鼠标或键盘事件的监听器,详细例子请看上面
29 .left
在按下left按键时才触发鼠标或键盘事件的监听器,详细例子请看上面
30 .right
在按下right按键时才触发鼠标或键盘事件的监听器,详细例子请看上面
31 .page-down
在按下(fn + down)按键时才触发鼠标或键盘事件的监听器,详细例子请看上面
32 .page-up
在按下(fn + up)按键时才触发鼠标或键盘事件的监听器,详细例子请看上面
如何自定义按键修饰符
==========
vue本身给我们内置了很多实用的按键修饰符,大部分情况下可以满足我们的日常需求了,那么有没有办法可以自定义按键修饰符呢?
通过以下配置即可定义一个属于我们自己的按键修饰符, 比如我们定义q为按下q的快捷键。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
总结
秋招即将开始,校招的朋友普遍是缺少项目经历的,所以底层逻辑,基础知识要掌握好!
而一般的社招,更是神仙打架。特别强调,项目经历不可忽视;几乎简历上提到的项目都会被刨根问底,所以项目应用的技术要熟练,底层原理必须清楚。
这里给大家提供一份汇集各大厂面试高频核心考点前端学习资料。涵盖 HTML,CSS,JavaScript,HTTP,TCP协议,浏览器,Vue框架,算法等高频考点238道(含答案)!
资料截图 :
CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
高级前端工程师必备资料包
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
总结
秋招即将开始,校招的朋友普遍是缺少项目经历的,所以底层逻辑,基础知识要掌握好!
而一般的社招,更是神仙打架。特别强调,项目经历不可忽视;几乎简历上提到的项目都会被刨根问底,所以项目应用的技术要熟练,底层原理必须清楚。
这里给大家提供一份汇集各大厂面试高频核心考点前端学习资料。涵盖 HTML,CSS,JavaScript,HTTP,TCP协议,浏览器,Vue框架,算法等高频考点238道(含答案)!
资料截图 :
CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
高级前端工程师必备资料包
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算