Vue项目的记录(三)

本文介绍了JavaScript中事件委派的原理和应用,用于优化大量动态元素的事件绑定,避免内存消耗。同时,探讨了节流和防抖技术在处理频繁触发事件时的策略,例如在用户输入场景下的性能优化。文章还详细讲解了在三级联动组件中如何实现路由跳转和参数传递,特别讨论了使用编程式导航和事件委派解决路由跳转卡顿问题的方法,并通过添加自定义属性来区分不同级别的分类标签。
摘要由CSDN通过智能技术生成

1. 完成以及分类动态添加背景颜色

通过JS来完成
用到的知识: 事件委派。标签动态绑定类名
在这里插入图片描述
在这里插入图片描述

2. 节流与防抖

解决: 下载lodash插件; lodash函数库对外暴露 _函数(可百度搜索中文文档)

节流:在规定的间隔时间范围内不会重复触发回调,只有大于这个时间间隔才会触发回调,把频繁触发变为少量触发(用户操作很频繁,但是把频繁的操作变为少量操作相当于给浏览器有充裕的时间解析代码 ” )
在这里插入图片描述

防抖:前面的所有的触发都被取消,最后一次执行在规定的时间之后才会触发,也就是说如果连续快速的触发只会执行一次(用户操作很频繁,但是只执行一次) _.debounce()
在这里插入图片描述
三级联动的节流
项目中node_modules已经有lodash, 按需引入,优化开发,不要全部引用
在这里插入图片描述
函数写成这种形式,要注意不能写成箭头函数,不然this的指向会有问题。

3. 三级联动组件的路由跳转与传递参数

  1. 三级联动用户可以点击的:一级分类、二级分类、三级分类,当你点击的时候

  2. Home模块跳转到Search模块,一级会把用户选中的产品(产品的名字、产品的ID)在路由跳转的时候,进行传递。
    (localhost8080/#/search?categoryName=对讲机&category3ld=62

  3. 路由跳转:
    1.声明式导航:router-link
    2.编程式导航:push/replace

  4. 三级联动:如果使用声明式导航router-link,可以实现路由的跳转与传递参数。但是需要注意,出现卡顿现象。

  5. 出现卡顿现象原因:router-link:可以一个组件,当服务器的数据返回之后,循环出很多的router-link组件【创建组件实例的】创建组件实例的时候,一瞬间创建1000+ 十分耗内存的,因此出现了卡顿现象。

  6. 所以最好的解决方案是使用:编程时导航 + 事件委派
    为什么使用事件委派:是因为如果给每一个 a标签 去添加一个点击事件,那么有成千个 a标签, 就意味着有成千个回调函数,那么就会对性能造成了影响。如果使用事件委派,那么只需要给其父节点绑定一个点击事件即可。

  7. 事件委派存在的问题
    1 事件委派是把全部的子节点【h3、dt、dl、em】的事件委派给父亲节点,但是我们的需求是点击a标签的时候,才会进行路由跳转怎么能确定点击的一定是a标签
    2 存在另外一个问题:即使你能确定点击的是a标签,如何区分是一级、二级、三级分类的标签。

  8. 对7的解决方法
    使用自定义属性
    在这里插入图片描述
    let element = event.target
    这里显示element中的标签里的属性有个细节,他会变成小写,要注意
    在这里插入图片描述
    在这里插入图片描述
    element.dataset点击有自定义属性的就会有出现自定义属性,可区分点击的是a标签而不是其他标签
    element.dataset这个好像是与自定义属性有关的,之前js学的有点遗忘,要记得回去补充知识
    运行的结果:
    在这里插入图片描述
    如何区分是一级、二级、三级分类的标签? 一样添加自定义属性
    在这里插入图片描述
    完整示例代码
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值