PC项目笔记

本文记录了在前端PC项目中的实践经验,包括lodash的按需引入、事件控制、数据结构优化、事件委托、Mock数据的使用以及Vuex状态管理等。重点讨论了解决大量router-link导致的性能问题,以及如何在不同页面状态间管理和切换数据。同时,还涵盖了Swiper轮播图的正确实现方法和路由守卫的使用策略。
摘要由CSDN通过智能技术生成
  1. 整体引入 lodash:import _ from 'lodash'

    按需引入 lodash 中的 throttle:import throttle from 'lodash/throttle'

  2. 事件控制 2、3 级分类的显示和隐藏:

    原来的是使用 css 去做的,改为一个类:

    1. 首先把原来的 hover 去掉,改为一个类。
    2. 在 item 身上动态的强制绑定 class,[item_on: 布尔值],布尔值为 true,那么当前的这个 item 的类就生效。
    3. 移入哪一个 item,就让当前这个 item 的类为 true。
    4. 设计一个数据,currentIndex = -1
    5. 移入 item 的时候,让 currentIndex = index
    6. 移出不能再 item 身上去加,因为最后 item 和 h2 移出他们整体会把 2 级分类隐藏,所以需要用 div 把 item 和 h2 包裹,给 div 添加。
  3. 把所有的 a 标签换成 router-link 会卡,因为组件标签太多了,导致内存当中组件对象太多,容易造成鼠标移动到列表中的时候,一卡一卡的。(来自于111集 - 20: 00 - 点击分裂跳转到搜索页面,携带 query 参数 )

    解决办法:

    1. 把 **声明式导航 router-link **改为 编程式导航 $router.push({})
    2. 把声明式导航改为编程式导航,click 事件在点击之后,是需要调用函数的,同样每个 a 标签都添加了点击事件,那么内容中就会定义很多个函数,内存占用也是比较大的,效率虽然比声明式导航强,但是还是不够好。再用事件委托来把函数定义在父元素上来解决。
  4. 事件委派(事件委托):在共同的父级/祖辈元素身上添加事件监听。

    问题:怎么知道点击的是不是 a 标签?

    问题:假如你知道你点击的是 a 标签,怎么知道点击的是一级还是二级还是三级?

    问题:参数怎么携带,要携带哪些个的参数?

    这三个问题可以使用自定义属性data-来解决。如:

    <a href="javascript:;" :data-category1Id="c1.categoryId" :data-categoryName="c1.categoryName"> {
         {
         c1.categoryName}}
    </a>
    
    <a href="javascript:;" :data-category2Id="c2.categoryId" :data-categoryName="c2.categoryName"> {
         {
         c2.categoryName}}
    </a>
    
    <a href="javascript:;" :data-category3Id="c3.categ
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值