vue 页面卡顿如何优化?

2020-08-31 21:58:34 +08:00
 zarte

v-for 方式生成 5 百多个 table (非组件),每个一百条数据以内字段不固定。之前发帖问了已正确设置唯一 key 。数据为动态 push 到数组渲染的。 页面任何操作输入文字,点击按钮啥的都卡。。。

3381 次点击
所在节点    问与答
8 条回复
seki
2020-08-31 22:03:13 +08:00
1.分页
1.滚动加载
1.虚拟渲染,例如 https://github.com/Akryum/vue-virtual-scroller
seki
2020-08-31 22:06:44 +08:00
也可以检查一下你的代码,是不是你输入一下文字和点击一下按钮就会弄得整个页面都重新渲染了,适当地抽象化组件实现部分重渲染说不定也能解决问题
meathill
2020-08-31 22:11:20 +08:00
500 多个 table,每个 100 条数据,怎么都会卡……

方案:

1. 不要用 table,用 grid + 限制列宽
2. 动态加载,保证同时只有少数几个表格在渲染
sixway
2020-08-31 22:17:59 +08:00
可以打开调试工具那里渲染花费了。
chrome 的 Performance
murmur
2020-08-31 22:21:16 +08:00
页面发出来看看,这东西不给代码怎么回答你?
jydeng
2020-08-31 22:57:22 +08:00
虚拟滚动
zarte
2020-09-01 09:43:28 +08:00
@meathill 嗯,我试下
redbuck
2020-09-01 10:34:30 +08:00
$('*').length 看下有多少 dom
dom 多可以懒加载.

table 加个 v-if,容器加个最小高度,再监听滚动事件(节流),进入视口的解除 v-if,离开的恢复 v-if.最好封装成指令.
数据量太大,又不用变化的,Object.freeze.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/702947

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX