jQuery SVG vs. Raphael [fermé]
Je travaille sur une interface interactive utilisant SVG et JavaScript / jQuery, et j'essaie de décider entre Raphael et jQuery SVG. Je voudrais savoir
- Quels sont les compromis entre les deux
- où l'élan de développement semble être.
Je n'ai pas besoin du support VML/IE dans Raphael, ou des capacités de traçage de jQuery SVG. Je suis principalement intéressé par la façon la plus élégante de créer, animer et manipuler des éléments individuels sur un SVG toile.
14 réponses
J'ai récemment utilisé Raphael et jQuery SVG - et voici mes pensées:
Raphaël
Avantages: une bonne bibliothèque de démarrage, facile à faire beaucoup de choses avec SVG rapidement. Bien écrit et documenté. Beaucoup d'exemples et de Démonstrations. Architecture très extensible. Génial avec l'animation.
Inconvénients: est une couche sur le balisage SVG réel, ce qui rend difficile de faire des choses plus complexes avec SVG - comme le regroupement (il supporte les ensembles, mais pas les groupes). Ne pas faire de grandes W / édition d'éléments déjà existants.
JQuery SVG
Avantages: {[6] } un plugin jquery, si vous utilisez déjà jQuery. Bien écrit et documenté. Beaucoup d'exemples et de démonstrations. Prend en charge la plupart des éléments SVG, permet un accès natif aux éléments facilement
Inconvénients: architecture pas aussi extensible que Raphaël. Certaines choses pourraient être mieux documentées (comme la configuration de L'élément SVG). Ne fait pas grand W / édition d'éléments déjà existants. Repose sur la sémantique SVG pour animation-ce qui n'est pas génial.
SnapSVG {[24] } comme une version SVG pure de Raphael
SnapSVG est le successeur de Raphaël. Il est pris en charge uniquement dans les navigateurs compatibles SVG et prend en charge presque toutes les fonctionnalités de SVG.
Conclusion
Si vous faites quelque chose de rapide et facile, Raphael est un choix facile. Si vous allez faire quelque chose de plus complexe, j'ai choisi D'utiliser jQuery SVG car je peux manipuler le balisage réel beaucoup plus facilement qu'avec Raphaël. Et si vous voulez une solution non-jQuery, SnapSVG est une bonne option.
Pour la postérité, je voudrais noter que j'ai fini par choisir Raphael, à cause de l'API propre et du support IE "gratuit", et aussi parce que le développement actif semble prometteur (le support des événements vient d'être ajouté en 0.7, Par exemple). Cependant, je vais laisser la question sans réponse, et je serais toujours intéressé d'entendre parler des expériences des autres en utilisant les bibliothèques Javascript + SVG.
Je suis un grand fan de Raphael et l'élan de développement semble aller fort (la version 0.85 a été publiée en fin de semaine dernière). Un autre gros avantage est que son développeur, Dmitry Baranovskiy , travaille actuellement sur un plugin de cartographie Raphael, G. raphael , qui semble être assez lisse (il y a quelques échantillons de la sortie des premières versions sur Flickr ).
Cependant, juste pour lancer un autre concurrent possible dans le mix de la bibliothèque SVG, Google SVG Web semble très prometteur en effet (même si Je ne suis pas un grand fan de Flash, qu'il utilise pour rendre dans les navigateurs non compatibles SVG). Probablement un à regarder, en particulier avec la prochaine SVG open conference .
Raphael est certainement plus facile à mettre en place et à aller de l'avant, mais notez qu'il existe des façons d'exprimer des choses en SVG qui ne sont pas possibles dans Raphael. Comme indiqué ci-dessus il n'y a pas de "groupes". Cela implique que vous ne pouvez pas implémenter de couches de Transfomations de coordonnées. Au lieu de cela, il n'y a qu'une seule transformation de coordonnées disponible.
Si votre conception dépend de transformations de coordonnées imbriquées, Raphael n'est pas pour vous.
Oh Raphael a beaucoup évolué depuis juin. Il y a une nouvelle bibliothèque de cartographie qui peut travailler avec elle et ceux-ci sont très accrocheur. Raphael prend également en charge la syntaxe complète du chemin SVG et intègre des méthodes de chemin vraiment avancées. Venez voir 1.2.8+ sur mon site (prise sans vergogne), puis rebondir sur le site de Dmitry à partir de là. http://www.irunmywebsite.com/raphael/raphaelsource.html
Je pense que ce n'est pas totalement sans rapport, mais avez-vous considéré canvas? quelque chose comme Process Js peut le rendre plus simple.
Vous devriez également jeter un oeil à svgweb. Il utilise flash pour rendre svg dans IE, et éventuellement sur d'autres navigateurs (dans les cas où il prend en charge plus que le navigateur lui-même).
Je vais lancer mon vote derrière Raphael - le support multi-navigateur, L'API propre et les mises à jour cohérentes (jusqu'à présent) en font une joie à utiliser. Il joue très bien avec jQuery aussi. Le traitement est cool, mais plus utile comme une démo pour les choses de pointe en ce moment.
En tant que débutant Javascript, j'ai trouvé des échantillons Rapahel pas si faciles, je recommande http://cancerbero.mbarreneche.com/raphaeltut , qui est un vrai tutoriel étape par étape.
Pour ceux qui ne se soucient pas de IE6 / IE7, le même gars qui a écrit Raphael a construit un moteur svg spécifiquement pour les navigateurs modernes: Snap.svg .. ils ont un très bon site avec de bons documents: http://snapsvg.io
Composant logiciel Enfichable.svg ne pourrait pas être plus facile à utiliser dès la sortie de la boîte et peut manipuler/mettre à jour les SVG existants ou en générer de nouveaux. Vous pouvez lire ce truc sur le snap.io A propos de la page, mais voici un rapide run down:
Inconvénients
- pour utiliser caractéristiques de snap vous devez renoncer à la prise en charge des anciens navigateurs. Raphael prend en charge les navigateurs comme IE6 / IE7, les fonctionnalités snap ne sont prises en charge que par IE9 et plus, Safari, Chrome, Firefox et Opera.
Avantages
Implémente toutes les fonctionnalités de SVG telles que le masquage, l'écrêtage, les motifs, les dégradés complets, les groupes, etc.
Possibilité de travailler avec des SVG existants: le contenu n'a pas besoin d'être généré avec Snap pour qu'il fonctionne avec Snap, vous permettant de créez le contenu avec tous les outils de conception courants.
-
Prise en charge complète de l'animation à l'aide d'une API JavaScript simple et facile à implémenter
Fonctionne avec des chaînes de SVG (par exemple, les fichiers SVG chargés via Ajax) sans avoir à les rendre en premier, similaire à un conteneur de ressources ou à une feuille de sprite.
Vérifiez-le si vous êtes intéressé: http://snapsvg.io
Puisque ce n'est pas encore mentionné ici: Vous devriez également jeter un oeil à Dojox.drawing , qui fournit également de bonnes capacités de dessin SVG. Il a un ensemble assez impressionnant de fonctionnalités. Je commence juste un projet avec, mais il me semble que c'est de loin supérieur (au moins en termes de fonctionnalités) à Raphael et JQuerySVG.
Cette présentation m'a convaincu de l'utiliser à la place de Raphael/JQuerySVG: http://www.slideshare.net/elazutkin/dojo-gfx-svg-in-the-real-world-2114082
Référence: http://dojotoolkit.org/reference-guide/dojox/index.html
Référence sur Dojocampus: http://docs.dojocampus.org/dojox/drawing
Télécharger Dojo (y compris Dojox): http://dojotoolkit.org/download/
Une autre bibliothèque JavaScript svg que vous pourriez vouloir regarder est d3.js. http://d3js.org/
Je préfère utiliser RaphaelJS car il a de grandes capacités cross-browser. Cependant, certains effets SVG & VML ne peuvent pas être obtenus avec RaphaelJS (dégradés complexes...).
Google a également développé sa propre bibliothèque pour activer le support SVG dans IE: http://svgweb.googlecode.com/files/svgweb-2009-08-20-B.zip
Si vous n'avez pas besoin de support VML et IE8, utilisez Canvas (PaperJS par exemple). Regardez les dernières démos IE10 pour Windows 7. Ils ont des animations étonnantes en toile. SVG n'est pas capable de faire quelque chose de proche d'eux. Toile globale est disponible à tous les navigateurs mobiles. SVG ne fonctionne pas aux premières versions D'Android 2.0-2.3 (comme je le sais)
Oui, Canvas N'est pas évolutif, mais si vite que vous pouvez redessiner l'ensemble du canvas plus rapidement que le navigateur capable de faire défiler le port de vue.
De mon perspective optimisations de Microsoft fournit des moyens d'utiliser Canvas comme moteur GDI régulier et mettre en œuvre des applications graphiques comme nous les faisons pour Windows maintenant.