我正在使用SVG和JavaScript/jQuery制作交互式界面,我正在尝试在Raphael和jQuery SVG之间进行选择。我想知道:
- 两者之间的权衡是什么
- 开发动力似乎在哪里。
我不需要Raphael中的VML/IE支持,也不需要jQuery SVG的绘图功能。我主要关注的是在SVG画布上创建、动画化和操作单个项目的最优雅的方法。
我正在使用SVG和JavaScript/jQuery制作交互式界面,我正在尝试在Raphael和jQuery SVG之间进行选择。我想知道:
我不需要Raphael中的VML/IE支持,也不需要jQuery SVG的绘图功能。我主要关注的是在SVG画布上创建、动画化和操作单个项目的最优雅的方法。
我最近使用了Raphael和jQuery SVG——以下是我的想法:
优点:一个不错的入门库,可以快速地完成许多SVG操作。写得很好并且有文档支持。有许多示例和演示。架构可扩展性强。对动画非常出色。
缺点:是实际SVG标记的一层,使得使用SVG进行更复杂的事情(如分组)变得困难(它支持集合,但不支持群组)。对于已经存在的元素编辑能力不佳。
优点:是一个jQuery插件,如果你已经在使用jQuery就方便很多。写得很好并且有文档支持。有许多示例和演示。支持大多数SVG元素,可以轻松地访问元素。
缺点:架构没有Raphael那么可扩展。有些东西可能需要更好的文档支持(例如SVG元素的配置)。对于已经存在的元素编辑能力不佳。依赖SVG语义进行动画-这不太好。
SnapSVG是Raphael的继任者。仅受支持的浏览器可以启用SVG,并且支持几乎所有SVG功能。
如果你要快速、简单地完成一些操作,Raphael是一个不错的选择。如果你要做更复杂的事情,我选择使用jQuery SVG,因为我可以比Raphael更容易地操纵实际的标记。如果你想要一个非jQuery解决方案,那么SnapSVG是一个不错的选择。
为了后人记录,我想指出我最终选择了 Raphael,因为它具有简洁的API和“免费”的IE支持,并且由于积极的开发看起来很有前途(例如,事件支持刚在 0.7 版本中添加)。然而,我会让这个问题保持未回答状态,并且我仍然很感兴趣听到其他人使用JavaScript + SVG库的经验。
我是 Raphael 的忠实粉丝,开发动力似乎依旧不减(上周末发布了 0.85 版本)。另一个大亮点是其开发者 Dmitry Baranovskiy 目前正在开发一款 Raphael 图表插件 g.raphael,看起来非常出色(早期版本的输出样本可以在 Flickr 上找到)。
然而,为了把可能的 SVG 库选择多样化,Google 的 SVG Web 看起来也很有前途(尽管它使用 Flash 在非 SVG 兼容浏览器中呈现,我并不是 Flash 的狂热爱好者)。特别是随着即将到来的 SVG Open 大会,这个库值得关注。
Raphael肯定更容易设置并开始使用,但请注意,在SVG中有些表达方式在Raphael中不可能实现。如上所述,没有“组”。这意味着您无法实现坐标转换的层级。只有一个可用的坐标变换。
如果您的设计依赖于嵌套的坐标转换,则不适合使用Raphael。
自六月以来,Raphael已经有了很大的进展。有一个新的图表库可以与之配合使用,非常引人注目。Raphael还支持完整的SVG路径语法,并正在整合真正先进的路径方法。来看看我的网站上的1.2.8+版本(不要在意我这个自夸),然后从那里跳到Dmitry的网站。 http://www.irunmywebsite.com/raphael/raphaelsource.html
您还应该看看svgweb。它使用flash在IE中呈现svg,并可选地在其他浏览器上使用(在它支持的情况下,超过了浏览器本身的支持)。
我认为这与画布(canvas)不完全无关,您考虑过像Process JS这样的东西吗?它可以使它更简单易懂。