当面试官问你这个问题,你的第一反应是什么呢?
一、首先和面试官确认设计是否合理?
二、主动和面试官沟通这个问题
三、如果这个需求合理,然后再寻求解决方案
浏览器能否处理10w条数据!
- JS没问题
- 渲染到DOM非常卡顿
那么针对这个渲染dom卡顿的问题,我们的解决方案如下:
1、自定义中间层
- 自定义nodejs中间层,获取并拆分这10w条数据
- 前端对接nodejs中间层,而不是服务端
- 成本比较高(需要自己搭建服务器,申请服务器,测试等流程)
可以参考浅谈前后端分离与实践 之 nodejs 中间层服务(二)
2、虚拟列表
- 只渲染可视区域DOM
- 其他隐藏区域不显示,只用div撑起高度
- 随着浏览器滚动,创建和销毁DOM
可以参考# 「百毒不侵(三)」结合“康熙选秀”,给大家讲讲“虚拟列表”
3、虚拟列表--第三方lib
- 虚拟列表实现起来非常复杂,可借用第三方lib
- Vue:vue-virtual-scroll-list
- React: react-virtualized
总结:
- 要主动沟通,表达观点(也许考察沟通能力)
- 后端的问题,首先要用后端的思维去解决—中间层
- 虚拟列表知识折中的选择,实现复杂的效果不一定好(需要注意低配手机)