【发布时间】:2015-01-19 21:09:24
【问题描述】:
我正在构建一个基于 javascript/jQuery 和 php 的 Web 应用程序,我需要在网页,并正在寻找有关使用方法/库的建议,主要是为了了解如何在保持页面性能可接受的同时做到这一点。
对象是简单的几何形状(矩形、圆形、正方形等),我需要将事件处理程序附加到它们并能够移动/调整大小。形状属性将基于 javascript 对象的属性,我需要根据 javascript 对象属性更改形状,反之亦然。
画布区域可能非常大(不确定这是否会影响性能?)虽然并非所有对象都会在页面上“可见”,但必须能够在 div 内滚动(使用溢出等)围绕整个画布。我使用 jQuery SVGDOM 构建了一些用于测试目的的东西,当我有几百个对象时效果很好,但是当我超过 1000 个对象时页面会停止。
我喜欢 svgdom 的地方在于它非常适合 jQuery 引用 DOM 对象(用于事件处理程序等),但如果我需要,我愿意(尝试)开发更复杂的代码以便能够从性能角度解决 svgdom 似乎不满意的大量对象。
关于如何做到这一点的任何建议?
【问题讨论】:
-
试图让用户理解和操作 20000 多个项目肯定会让用户和浏览器都不知所措。所以首先,减少物品的数量。请记住,SVG 项目是 DOM 的“智能”成熟成员,因此它们很有用但使用起来很昂贵。画布形状是“愚蠢的”,因此它们很有用,但编程和跟踪的成本很高。是的,一个过大的画布会消耗资源,因为浏览器必须维护整个画布,即使它只是部分可见。无论哪种方式,您都包含了太多的项目!
-
感谢 cmets markE - 不幸的是,要求是对象数量,所以问题是如何我处理它们。我仍在考虑的另一个选择是继续使用 SVG 并有效地对对象进行分页,我将显示 500,然后用户需要转到下一页查看下一个 500。虽然这并不理想,因为对于对象的关系,如果现实是在单个画布上管理大量对象不切实际,那么我将不得不这样做
-
尽管有您的要求,但 20K 的并发托管项目对于即使是功能最强大的设备来说也太多了。 200-500 个并发托管项更现实。
-
干杯@markE。所以听起来最现实的选择是坚持使用 SVG 并将每页的对象数量保持在数百个以下,然后让用户页面通过以显示下一个/上一个对象集并为每个页面重绘画布。
标签: javascript jquery html canvas svg