美文网首页
Entry Task Black Cat

Entry Task Black Cat

作者: haha2333 | 来源:发表于2020-07-18 13:04 被阅读0次

    历时n天,终于把entry task做完了。很多个第一次

    第一次用cli4搭建项目

    之前用的版本好像是2?,自己快要一年都没有写vue项目了。vue变化真大

    第一次用ts+vue写项目。

    算是ts的初体验吧。繁琐的类型定义。虽然真的会规避掉很多错误。但是要写多很多代码也是真的。漏写了就红杠杠警告!心累。
    ts+vue的项目除了ts语法,vue写起来也有一些不同。

    第一次如此严格的eslint

    eslint不过关,直接不让编译。哭了
    ……

    唠家常完毕
    下面说说这次过程中遇到的坑和收获


    1. svg图标的使用
      https://www.jianshu.com/p/c95812dbc15b

    2. vue监听列表滚动至底部
      https://my.oschina.net/parchments/blog/3163606

    一般做法就是,注册监听事件,挂载监听器,设置监听方法(监听方法设置节流/防抖)
    这个点遇到比较吊诡的事情就是,监听到的scrollTop一直为0。原因是监听器没有挂对位置。

    由此引起一个问题,什么是scrollTop?
    当元素纵向排列时,当子容器的高度超出了父容器的高度,并且父容器设置了overflow: scroll时,此时父容器就会产生了滚动条。
    scrollTop正是针对这个滚动条来说的,含义为,元素滚动条内的顶部隐藏部分的高度。
    scrollHeight:指父容器的可滚动高度,只读,不可设置
    clientHeight:屏幕高度

    // 获取clientheight常常使用这种写法
       const clientHeight = document.documentElement.clientHeight || document.body.clientHeight
    

    当html文档是否指定了DTD,使用documentElement
    没有指定DTD时,使用body
    这种写法兼容以上两种情况
    当scrollTop+clientheight = scrollHeight时,就是列表滚动到了底部。

    1. 使用IntersectionObserver监听元素出现,制作锚点定位
      (还记得毕设时,小程序对这个api兼容的不好,想使用它,监听常常不生效。现在在vue中,他终于发挥了作用)

    异步监听对比列表监听,不用操心监听位置。不用担心监听多次触发。
    值得注意的是,IntersectionObserver是一个异步的监听,这意味着,监听引起的变化不会太过灵敏。

    创建监听器:createObserver(el, options)。第一个参数为监听的dom节点,options是一些可选的配置项

    什么时候注册监听器?
    经过尝试,在mounted中注册监听事件,无法获取到ref节点
    (这和生命周期概念,mounted完成真实doom节点的挂载不太一样。另一种说法是如果这个节点挂载了v-if这些逻辑,也是找不到的。尝试过普通的节点,也无法获取ref节点)

    因此为了百分百获得监听的dom节点,
    选择在updated的nextTick中注册监听事件(优化:判断没有注册时才进行注册)

    又发现,当我把id,ref挂载到子组件上时,在updated的nextTick中也无法获得这个dom节点。这牵涉到了父子组件生命周期执行顺序的问题。


    遗憾: 没有用rem单位去做移动端屏幕的适应
    https://juejin.im/post/5b6503dee51d45191e0d30d2

    ET就此落幕~


    下周进行看文档学习

    相关文章

      网友评论

          本文标题:Entry Task Black Cat

          本文链接:https://www.haomeiwen.com/subject/kioghktx.html