我在使用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还支持完整的SVG路径语法,并结合了真正高级的路径方法。来看看1.2.8+在我的网站(无耻插头),然后从那里跳到德米特里的网站。 http://www.irunmywebsite.com/raphael/raphaelsource.html
其他回答
我认为这不是完全无关的,但是你考虑过帆布吗?像Process JS这样的东西可以让它更简单。
为了子孙后代,我想指出的是,我最终选择了Raphael,因为它干净的API和“免费”的IE支持,也因为它的积极开发看起来很有前途(例如,事件支持只是在0.7中添加的)。然而,我将不回答这个问题,我仍然有兴趣了解其他人使用Javascript + SVG库的经验。
如果你不需要VML和IE8支持,那么就使用Canvas(例如PaperJS)。看看最新的针对Windows 7的IE10演示。他们在Canvas上有很棒的动画。SVG不能做任何接近它们的事情。 Canvas在所有移动浏览器上都可用。SVG在Android 2.0- 2.3的早期版本中不起作用(据我所知)
是的,画布是不可伸缩的,但它是如此之快,你可以重新绘制整个画布更快,然后浏览器能够滚动查看端口。
从我的角度来看,微软的优化提供了使用Canvas作为常规GDI引擎和实现图形应用程序的方法,就像我们现在在Windows上做的那样。
我最近同时使用了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是一个很好的选择。
因为这里还没有提到: 您还应该看看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/