jQuery SVG対Raphael [終了]


254

私はSVGとJavaScript / jQueryを使用したインタラクティブなインターフェースに取り組んでおり、RaphaeljQuery SVGのどちらを使用するかを決定しようとしています。知りたい

  1. 2つの間のトレードオフとは
  2. 開発の勢いがあるようです。

RaphaelでのVML / IEサポートや、jQuery SVGのプロット機能は必要ありません。私は主に、SVGキャンバスで個々のアイテムを作成、アニメーション化、および操作する最もエレガントな方法に関心があります。

回答:


194

私は最近RaphaelとjQuery SVGの両方を使用しました-そしてここに私の考えがあります:

ラファエル

長所:優れたスターターライブラリー。SVGで多くのことをすばやく簡単に実行できます。よく書かれ、文書化されています。たくさんの例とデモ。非常に拡張可能なアーキテクチャ。アニメーションに最適です。

短所:実際のSVGマークアップの上のレイヤーであり、グループ化などのSVGでより複雑なことを実行することを困難にします(グループはサポートしますが、グループはサポートしません)。既存の要素の編集とはうまく機能しません。

jQuery SVG

長所: jQueryプラグイン(すでにjQueryを使用している場合)。よく書かれ、文書化されています。たくさんの例とデモ。ほとんどのSVG要素をサポートし、要素へのネイティブアクセスを簡単に許可

短所: Raphaelほど拡張性のないアーキテクチャ。(SVG要素の構成など)いくつかのものがより適切に文書化される可能性があります。既存の要素の編集とはうまく機能しません。アニメーションはSVGのセマンティクスに依存しています。

Raphaelの純粋なSVGバージョンとしてのSnapSVG

SnapSVGはRaphaelの後継です。SVG対応のブラウザでのみサポートされ、SVGのほぼすべての機能をサポートします。

結論

迅速かつ簡単に何かをしている場合、ラファエルは簡単な選択です。もっと複雑なことをする場合は、Raphaelよりもはるかに簡単に実際のマークアップを操作できるため、jQuery SVGを使用することにしました。また、jQuery以外のソリューションが必要な場合は、SnapSVGが適しています。


15
RaphaelJSのドキュメントもそれほど優れていません。制限があり、すべての情報を取得するためにSVGまたはjQueryのドキュメントにアクセスする必要がある場合があります。とは言うものの、デモ(ソースコード)だけでなく、フォーラムや多くのユーザーも利用できるので、必要な答えを得ることができました。
Roalt

11
私はRaphaelを使い始めたばかりで、ドキュメントがJavaScript APIで出会った中で最高のものの1つであることがわかりました。より正式な仕様の隣に非常に明確な例があります
wheresrhys

71
RaphaelJSにはInternet ExplorerのVMLに対する下位互換性があることを忘れないでください。古いブラウザではSVGが機能しないため、これは非常に大きな問題です。
strongriley '19年

3
質問は、特に下位互換性ではなく、SVGに関するものでした。欲望がクロスブラウザのベクトルグラフィックスであるならば、あなたは正しいです。
Anatoly G

4
もう1つのjQuery SVGの欠点は、プロジェクトがopensoucer(GPLおよびMIT)であるにもかかわらず、開発者によって中止されているようだということです(バージョン1.4.5最終更新2012年4月28日)。jquery.svg.domは、jQuery 1.8とのいくつかの競合を引き起こします。理想的には、誰かがプロジェクトを引き継ぐのを待って、うまくいけばそれをgithubに入れます
Hoffmann

53

後世のために、私は最終的にRaphaelを選択したことに注意したいと思います。これは、クリーンなAPIと「無料」のIEサポートのため、またアクティブな開発が有望に見えるためです(たとえば、イベントサポートは0.7で追加されたばかりです)。ただし、質問は未回答のままにしておきます。JavaScript+ SVGライブラリを使用した他のユーザーの経験について聞いてみたいと思います。


1
Raphaelに対するIEのサポートは素晴らしいです。IEで角が丸い正方形?...問題ありません;)
Peter Ajtai

26

私はラファエルの大ファンで、開発の勢いが強くなっているようです(バージョン0.85が先週リリースされました)。もう一つの大きなプラスは、その開発者、ということであるドミトリーBaranovskiyは、現在、ラファエルチャート作成プラグイン、に取り組んでg.raphaelそのはかなりツルツルになりつつのように見える、(出力のいくつかのサンプルは上の初期のバージョンからあるのFlickr) 。

ただし、SVGライブラリミックスに別の可能性のある候補を投入するためだけに、GoogleのSVG Webは確かに非常に有望に見えます(私はFlashの大ファンではありませんが、SVG非対応ブラウザーでのレンダリングに使用しています)。特に注目されるのは、特にSVG Openカンファレンスが近づいている場合です。


1
現時点では、Raphael v。1.5.2です。
topright gamedev '18 / 02/18

3
現在のバージョンが2.1.2であることに気づくことは大したことではありません。このコメントは、数年後に別の男に修正されるのを待っています...
Tebe

Kopat 'Sho Ya Nashel、数年後... Raphael v2.2.1になりました
Nathangrad

12

Raphaelの方がセットアップと実行がはるかに簡単ですが、Raphaelでは不可能なSVGでの表現方法があることに注意してください。上記のように、「グループ」はありません。これは、座標変換のレイヤーを実装できないことを意味します。代わりに、使用できる座標変換は1つだけです。

デザインがネストされた座標変換に依存している場合、Raphaelは適していません。


11

ああラファエルは6月以来大幅に進んでいます。それを使用できる新しいグラフ作成ライブラリがあり、これらは非常に目を引くものです。Raphaelは完全なSVGパス構文もサポートし、本当に高度なパスメソッドを組み込んでいます。私のサイト(恥知らずなプラグイン)で1.2.8+を見て、そこからDmitryのサイトに跳ね返ってください。 http://www.irunmywebsite.com/raphael/raphaelsource.html


6

全く無関係ではないと思いますが、キャンバスを考えましたか?プロセスJSのようなものはそれをより簡単にすることができます。


12
私はキャンバス全般と特に処理の両方を見てきました。問題は、(私が知る限り)DOMに完全に公開されているSVGとは異なり、ドラッグアンドドロップなどの機能では、マウスイベントをキャンバス上の個々の項目に簡単にアタッチできないことです。
ルークデニス

1
私はキャンバスで広範な作業を行っていませんが、Flot-チャートにキャンバスを使用するjqueryプラグインを調べています。マウスクリックをかなりうまく処理します。
Bharani

4
マウスのクリックは可能ですが、キャンバスのアイテムのdomイベントはクリックしません。実際、Canvasの場合、イベントハンドラーをキャンバスに配置することはできません(IEのため)。キャンバスを保持するdivに配置することはできます。
Nosredna 2009

3
キャンバスはビットマップに、SVGはベクターグラフィックスに最適です。SVGの拡張機能は、その点で優れています。canvasとSVGは補完的なテクノロジーだと思います。
Anatoly G

キャンバスのマウスイベントについては、これをすべて処理するEasel.jsをご覧ください。
Neil

6

svgwebも確認してください。Flashを使用してIEでsvgをレンダリングし、オプションで他のブラウザーで(ブラウザー自体がサポートする以上のものをサポートする場合)。

http://code.google.com/p/svgweb/


5

私はRaphaelの反対票を投じます-クロスブラウザーのサポート、クリーンなAPI、および一貫した更新(これまでのところ)は、それを使用する喜びです。jQueryでも非常にうまく機能します。処理はクールですが、現時点では最先端のもののデモとしてより役立ちます。



5

IE6 / IE7を気にしない人のために、ラファエルを書いた同じ男が、特に最近のブラウザのため、SVGエンジンを構築しました:Snap.svgは ...彼らは良いドキュメントと本当に素敵なサイトを持っている:http://snapsvg.io

snap.svgは、箱​​から出してすぐに使いやすく、既存のSVGを操作/更新したり、新しいものを生成したりできます。あなたはsnap.io aboutページでこれを読むことができますが、ここに簡単な要約があります:

短所

  • snapの機能を利用するには、古いブラウザーのサポートを断念する必要があります。RaphaelはIE6 / IE7などのブラウザーをサポートし、スナップ機能はIE9以降、Safari、Chrome、Firefox、Operaでのみサポートされます。

長所

  • マスキング、クリッピング、パターン、完全なグラデーション、グループなどのSVGのすべての機能を実装します。

  • 既存のSVGを使用する機能:Snapを使用するためにコンテンツをSnapで生成する必要はなく、一般的なデザインツールでコンテンツを作成できます。

  • シンプルで実装が簡単なJavaScript APIを使用した完全なアニメーションのサポート

  • リソースコンテナーやスプライトシートのように、実際にレンダリングすることなく、SVGの文字列(たとえば、Ajax経由で読み込まれたSVGファイル)を操作します。

興味があればチェックしてくださいhttp : //snapsvg.io


3

ここではまだ触れていません。Dojox.drawingご覧ください。これは、優れた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/




0

VMLとIE8のサポートが必要ない場合は、Canvas(PaperJSなど)を使用してください。Windows 7向けの最新のIE10デモをご覧ください。Canvasには素晴らしいアニメーションがあります。SVGはそれらに近いことは何もできません。全体的なキャンバスは、すべてのモバイルブラウザで使用できます。SVGはAndroid 2.0-2.3の初期バージョンでは動作しません(私が知っているように)

はい、Canvasはスケーラブルではありませんが、非常に高速なので、ビューポートをスクロールできるブラウザよりも速くキャンバス全体を再描画できます。

私の観点から見ると、Microsoftの最適化は、Canvasを通常のGDIエンジンとして使用し、Windowsのようにグラフィックアプリケーションを実装する手段を提供します。


1
純粋なグラフィックレンダリングについては、私は完全に同意します。描画要素は生のビットマップではなく完全なDOMオブジェクトであるため、SVG / VMLが提供するキャンバスの1つはDOMとイベント階層です。キャンバスの場合、X / Yクリック座標は、実行できる最高の座標です。とにかく、このプロジェクトは終了してから長いので、現時点では関係ありませんが、回答に感謝します。:)
ルークデニス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.