javascript - jQuery SVG vs. Raphael
Jag arbetar på ett interaktivt gränssnitt med SVG och JavaScript/jQuery, och jag försöker bestämma mellan Raphael och jQuery SVG. Jag skulle vilja veta
- Vilka kompromisserna är mellan de två
- Var utvecklingsmomentet verkar vara.
Jag behöver inte VML/IE-stödet i Raphael, eller plottningsmöjligheterna i jQuery SVG. Jag är främst intresserad av det mest eleganta sättet att skapa, animera och manipulera individuella objekt på en SVG-canvas.
Svar #1
Jag har nyligen använt både Raphael och jQuery SVG - och här är mina tankar:
Raphael
Fördelar: ett bra startbibliotek, lätt att göra MASSOR av saker med SVG snabbt. Välskrivet och dokumenterat. Många exempel och demonstrationer. Mycket extensiv arkitektur. Fantastiskt med animation.
Nackdelar: är ett lager ovanpå den faktiska SVG-markeringen, vilket gör det svårt att göra mer komplexa saker med SVG - såsom gruppering (det stöder Set, men inte grupper). Fungerar inte bra med redigering av redan existerande element.
jQuery SVG
Fördelar: ett jQuery-plugin, om du redan använder jQuery. Välskrivet och dokumenterat. Många exempel och demonstrationer. Stöder de flesta SVG-element, låter dig enkelt få inbyggd åtkomst till element
Nackdelar: arkitekturen är inte lika utbyggbar som Raphael. Vissa saker skulle kunna dokumenteras bättre (som konfigurering av SVG-element). Fungerar inte så bra med redigering av redan existerande element. Ägnar sig åt SVG-semantik för animation - vilket inte är så bra.
SnapSVG som en ren SVG-version av Raphael
SnapSVG är efterföljaren till Raphael. Det stöds endast i webbläsare som har SVG och stöder nästan alla funktioner i SVG.
Slutsats
Om du gör något snabbt och enkelt är Raphael ett enkelt val. Om du ska göra något mer komplext valde jag att använda jQuery SVG eftersom jag kan manipulera själva markeringen betydligt enklare än med Raphael. Och om du vill ha en lösning utan jQuery är SnapSVG ett bra alternativ.
Svar #2
För eftervärlden vill jag notera att jag slutade med att välja Raphael, på grund av det rena API:et och det "gratis" stödet för IE, och också eftersom den aktiva utvecklingen ser lovande ut (händelsestöd lades till i version 0.7, till exempel). Jag kommer dock att lämna frågan obesvarad, och jag skulle fortfarande vara intresserad av att höra om andras erfarenheter av att använda Javascript + SVG-bibliotek.
Svar #3
Jag är ett stort fan av Raphael och utvecklingstempot verkar gå starkt (version 0.85 släpptes i slutet av förra veckan). En annan stor fördel är att dess utvecklare, Dmitry Baranovskiy, för närvarande arbetar på ett Raphael-diagramplugin, g.raphael, som ser ut att bli ganska snyggt (det finns några exempel på resultat från de tidiga versionerna på Flickr).
Men för att kasta in ytterligare en möjlig kandidat i SVG-biblioteksblandningen ser Googles SVG Web verkligen mycket lovande ut (även om jag inte är ett stort fan av Flash, som det använder för att rendera i icke-SVG-kompatibla webbläsare). Förmodligen en att hålla ögonen på, särskilt med den kommande SVG Open-konferensen.
Svar #4
Raphael är definitivt enklare att sätta upp och komma igång med, men notera att det finns sätt att uttrycka saker i SVG som inte är möjliga i Raphael. Som nämnts ovan finns det inga "grupper". Detta innebär att du inte kan implementera lager av koordinattransformationer. Istället finns det bara en koordinattransformation tillgänglig.
Om din design beror på nästlade koordinattransformationer är Raphael inte för dig.
Svar #5
Åh, Raphael har utvecklats avsevärt sedan juni. Det finns ett nytt diagrambibliotek som kan fungera med det och dessa är mycket ögonfångande. Raphael stöder även full SVG-path-syntax och inför riktigt avancerade path-metoder. Kom och se 1.2.8+ på min sida (skamlös reklam) och hoppa sedan över till Dmitrys sida därifrån. http://www.irunmywebsite.com/raphael/raphaelsource.html