1. 场景说明
我们的前端项目中主要用第三方库vue-infinite-scroll
来实现无限滚动列表。然而,在最近写一个需求时,发现基于vue-infinite-scroll
来实现列表的无限滚动时,会有无法触发滚动事件的问题。这样导致了列表滚动到底部时,无法拉取新的数据。经过查阅第三方库vue-infinite-scroll
的官方文档,以及参考项目中使用到此库的其他地方,发现在用法上没有什么异常。就此基于查看源码去做一个详细的研究。
- 源代码阅读 & 猜想
=============
在node_modules
下面找到了vue-infinite-scroll
库所在的地方,很幸运,打包后的代码没有压缩成完全看不懂的样子,且仅有简短的236
行。这意味着我们理解代码的时间不需要太长。同时,后面我们能够直接修改打包后的文件来进行调试,验证研究中的各种猜想。
按照职能阅读: 尽管代码量不大,但以快速解决问题为目的。我们还是需要避重就轻,只阅读对解决问题有必要的部分即可。通过略读代码,根据函数名划分函数职能,可以帮助我们很好地做到这一点。
- 简单工具类函数:
getScrollTop
,getVisibleHeight
,getElementTop
等,从函数名看出它们的主要职能都是获取列表元素的一些基本属性,加以处理来实现无限滚动。而我