用vue来实现一个pc端滚动加载更多,没有使用UI框架,纯手工

  1.判断浏览器滚动条是否到达底部,如果到达底部,则使用axios拉取数据

  2.拉取成功后,更新数据

  这里采用了头尾固定和中间高度自适应的布局方式,中间内容块高度没有设置,所以滚动条是在div的内容区域的,并不是在页面上,然而中间内容区域出现一个滚动条不是很好看,所以可以调整一下滚动条样式

  是对元素的滚动监听,项目中是中间内容的最外层元素,这里碰到一个坑就是对中间滚动元素监听都无效,必须对中部内容块的最外层元素监听。需要获取到元素的dom节点,在vue组件里面使用的是原生js的监听事件。

  发现一个问题就是当浏览器到达底部时,会多次触发函数,为了解决这个问题,进行函数节流。

  浏览器中某些计算和处理要比其他的昂贵很多。例如,DOM 操作比起非 DOM 交互需要更多的内存和 CPU 时间。连续尝试进行过多的 DOM相关操作可能会导致浏览器挂起,有时候甚至会崩溃。尤其在 IE 中使用 onresize 事件处理程序的时候容易发生,当调整浏览器大小的时候,该事件会连续触发。

  在 onresize 事件处理程序内部如果尝试进行 DOM 操作,其高频率的更改可能会让浏览器崩溃。为了绕开这个问题,你可以使用定时器对该函数进行节流。

  函数节流背后的基本思想是指,某些代码不可以在没有间断的情况连续重复执行。第一次调用函数,创建一个定时器,在指定的时间间隔之后运行代码。当第二次调用该函数时,它会清除前一次的定时器并设置另一个。如果前一个定时器已经执行过了,这个操作就没有任何意义。然而,如果前一个定时器

  尚未执行,其实就是将其替换为一个新的定时器

  在这个项目中,是这样的

  在拉取数据时,可能会有时间缓存,在等待时间里使用了一个loading图,转圈的圆环,css3写的简单转圈效果,一个画了270°的圆。使用了axios拉取数据,在回调函数中隐藏loading缓冲,因为已经拉取完成了。

  唉,真的想哭,或许以后可以优化成更优雅的写法