vue.js - Vue显示大矩阵崩溃浏览器
问题描述
我正在尝试显示一个由 0/1 构成的大矩阵,每个单元格都是一个可以是黑色或白色的 div,当尝试显示大小为 1000x1000 的矩阵时,浏览器崩溃...
我正在使用与 v-for 嵌套的 v-for 来显示它...
我怎样才能提高性能?
解决方案
这不是 Vue 相关的问题,而是 DOM 相关的问题。您在页面上放置了超过一百万个 DOM 元素。我运行测试的选项卡生成了一个稳定的 1000x1000 矩阵,其中包含空的 div 和类,显示它消耗了 2.3GB 的内存。甚至渲染都花费了相当长的时间,并且滚动非常慢,这表明是浏览器在这里遇到了问题。渲染页面后,Vue 在我的测试中没有做任何事情。
您可以做什么取决于用例。如果您只想以图形方式显示数据,请考虑使用画布。您可以在画布上自由绘图,并且由于您不必处理大约一百万个 dom 元素,因此性能应该会好得多。
其他技术包括延迟加载,您使用滚动位置仅加载/显示视口中的行。这将减少 dom 元素的数量,从而提高性能。
或者,您可以通过提供过滤器或类似的东西来限制提供给用户的数据量。如果过滤器匹配的项目太多,您可以在一定数量的项目上将其切断,您知道这些项目会在浏览器中正常呈现,并显示一条消息,指出出于性能原因,某些结果被隐藏。
推荐阅读
- r - 使用 sparklyr 运行并行函数调用
- java - 嘿,你能告诉我输出是如何出现在以下代码中的吗?
- node.js - Private chat using MERN stack and socket.io
- c++ - Why does std::tuple break small-size struct calling convention optimization in C++?
- vue.js - Load vue-cli-version-marker from local
- android - Android - 如何在显示活动时自动显示输入法选择器?
- python - creating a command for csv file creating in discord bot(python)
- javascript - 无法加载 CreatedProjects/angular-route.min.js.map 的内容:HTTP 错误:状态代码 404,net::ERR_HTTP_RESPONSE_CODE_FAILURE
- mysql - 如何在mysql中总结时间格式(hh:mm:ss.ms)
- ros - 如何发布 JoyFeedbackArray 消息