Snap.svg
从性能方面选择 Canvas 或 SVG
性能对于高流量的网站来说是绝对关键的。虽然 Canvas
通常被视为具有高性能,但是并不意味着它就是明显的选择。下图显示了 SVG
对象和 Canvas
对象之间在呈现时间上的差异。
一般情况下,随着屏幕大小的增大,画布将开始降级,因为需要绘制更多的像素。随着屏幕上的对象数目增多,SVG
将开始降级,因为我们正不断将这些对象添加到 DOM
中。这些度量不一定准确,以下方面的不同一定会引起变化:实现和平台、是否使用完全硬件加速的图形,以及 js
引擎的速度。
下图展示了适合用于canvas
的场景以及svg
的适合场景:
Canvas
- 依赖分辨率
- 不支持事件处理器
- 弱的文本渲染能力
- 能够以 .png 或 .jpg 格式保存结果图像
- 最适合图像密集型的游戏,其中的许多对象会被频繁重绘
SVG
- 不依赖分辨率
- 支持事件处理器
- 最适合带有大型渲染区域的应用程序(比如谷歌地图)
- 复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快)
- 不适合游戏应用