我在使用SVG和JavaScript/jQuery的交互界面上工作,我试图在Raphael和jQuery SVG之间做出决定。我想知道
这两者之间的权衡是什么 发展势头似乎在哪里。
我不需要Raphael中的VML/IE支持,也不需要jQuery SVG的绘图功能。我主要感兴趣的是在SVG画布上创建、制作动画和操作单个项目的最优雅的方法。
我在使用SVG和JavaScript/jQuery的交互界面上工作,我试图在Raphael和jQuery SVG之间做出决定。我想知道
这两者之间的权衡是什么 发展势头似乎在哪里。
我不需要Raphael中的VML/IE支持,也不需要jQuery SVG的绘图功能。我主要感兴趣的是在SVG画布上创建、制作动画和操作单个项目的最优雅的方法。
当前回答
因为这里还没有提到: 您还应该看看Dojox。它还提供了良好的SVG绘图功能。它有一系列令人印象深刻的功能。我刚开始用它做一个项目,但在我看来它比Raphael和JQuerySVG要好得多(至少在特性方面)。
这个演示说服了我使用它而不是Raphael/JQuerySVG: http://www.slideshare.net/elazutkin/dojo-gfx-svg-in-the-real-world-2114082
参考: http://dojotoolkit.org/reference-guide/dojox/index.html
Dojocampus参考资料: http://docs.dojocampus.org/dojox/drawing
下载Dojo(包括Dojox): http://dojotoolkit.org/download/
其他回答
我最近同时使用了Raphael和jQuery SVG -以下是我的想法:
拉斐尔
优点:一个很好的入门库,很容易用SVG快速做很多事情。良好的书写和记录。大量的例子和演示。非常可扩展的体系结构。擅长动画。
缺点:是实际SVG标记之上的一层,使得用SVG做更复杂的事情变得困难——比如分组(它支持集,但不支持组)。不做伟大的w/编辑已经存在的元素。
jQuery SVG
优点:一个jquery插件,如果你已经在使用jquery。良好的书写和记录。大量的例子和演示。支持大多数SVG元素,允许本地轻松访问元素
缺点:架构不像Raphael那样可扩展。有些东西可以更好地记录(比如SVG元素的配置)。不做伟大的w/编辑已经存在的元素。动画依赖SVG语义——这不是很好。
SnapSVG是Raphael的纯SVG版本
SnapSVG是Raphael的继承者。它只在支持SVG的浏览器中得到支持,并且支持SVG的几乎所有特性。
结论
如果你想做一些快速简单的事情,拉斐尔是一个简单的选择。如果要做一些更复杂的事情,我选择使用jQuery SVG,因为我可以比使用Raphael更容易地操作实际标记。如果你想要一个非jquery的解决方案,那么SnapSVG是一个很好的选择。
我是Raphael的超级粉丝,开发势头似乎很强劲(上周晚些时候发布了0.85版本)。另一个很大的优点是,它的开发者Dmitry Baranovskiy目前正在开发Raphael图表插件g.raphael,这个插件看起来相当漂亮(在Flickr上有一些早期版本的输出样本)。
然而,为了在SVG库中加入另一个可能的竞争者,谷歌的SVG Web看起来确实很有前途(尽管我不是Flash的狂热爱好者,它使用Flash在不兼容SVG的浏览器中进行渲染)。可能是值得关注的,特别是在即将到来的SVG Open会议上。
对于那些不关心IE6/IE7的人来说,编写Raphael的同一个人专门为现代浏览器构建了一个svg引擎:Snap.svg…他们有一个非常好的网站,上面有很好的文档:http://snapsvg.io
svg开箱即用再容易不过了,它可以操作/更新现有svg或生成新的svg。你可以在照片上看到这些东西。IO关于页面,但这里有一个快速运行:
Cons
为了使用snap的功能,你必须放弃对旧浏览器的支持。Raphael支持IE6/IE7等浏览器,snap功能仅支持IE9及以上版本,Safari, Chrome, Firefox和Opera。
Pros
Implements the full features of SVG like masking, clipping, patterns, full gradients, groups, and more. Ability to work with existing SVGs: content does not have to be generated with Snap for it to work with Snap, allowing you to create the content with any common design tools. Full animation support using a straightforward, easy-to-implement JavaScript API Works with strings of SVGs (for example, SVG files loaded via Ajax) without having to actually render them first, similar to a resource container or sprite sheet.
如果你感兴趣,请访问:http://snapsvg.io
我更喜欢使用RaphaelJS,因为它具有出色的跨浏览器能力。然而,有些SVG和VML效果无法用RaphaelJS实现(复杂的渐变…)
谷歌还开发了自己的库来支持IE中的SVG: http://svgweb.googlecode.com/files/svgweb-2009-08-20-B.zip
作为一个Javascript初学者,我发现Rapahel的例子不是那么容易,我推荐http://cancerbero.mbarreneche.com/raphaeltut,这是一个真正的一步一步的教程。