La réponse courte:
SVG serait plus facile pour vous, puisque la sélection et la déplacer est déjà intégrée. SVG objets sont les objets DOM, de sorte qu'ils ont ", cliquez sur" gestionnaires, etc.
Les DIVs sont ok, mais maladroit et ont affreux performances de chargement à un grand nombre.
La toile a la meilleure performance mains vers le bas, mais vous avez à mettre en œuvre tous les concepts de la gestion de l'état (sélection de l'objet, etc) vous-même, ou l'utilisation d'une bibliothèque.
La réponse longue:
HTML5 Canvas est tout simplement une surface de dessin pour un peu-carte. Vous mis en place pour en tirer (à Dire avec une couleur et l'épaisseur de ligne), tirage de chose, et puis la Toile n'a pas connaissance de cette chose: Il ne sait pas où il est ni ce que c'est que vous venez de dessiner, c'est juste pixels. Si vous voulez dessiner des rectangles et des ont leur de déplacer ou être sélectionnable, alors vous avez le code tout cela à partir de zéro, y compris le code rappelez-vous que vous avez dessiné.
SVG sur l'autre main doit conserver des références pour chaque objet qu'il rend. Chaque SVG/VML élément que vous créez est un réel élément dans le DOM. Par défaut, cela vous permet de garder beaucoup de mieux suivre les éléments que vous créez et le fait de traiter avec des choses comme les événements de la souris plus facile par défaut, mais il ralentit considérablement lorsqu'il existe un grand nombre d'objets
Ceux SVG DOM références dire que certains le jeu de jambes de traiter avec les choses que vous dessinez est fait pour vous. Et SVG est plus rapide lorsque le rendu vraiment de gros objets, mais plus lent lors du rendu de nombreux objets.
Un jeu serait probablement plus rapide dans la Toile. Une carte énorme programme serait probablement plus rapide en SVG. Si vous voulez utiliser de la Toile, j'ai quelques tutoriels sur l'obtention d'objets mobiliers et en cours d'exécution ici.
La toile serait mieux pour les choses plus vite et lourd bitmap manipulation (animation), mais prendra plus de code si vous voulez que beaucoup d'interactivité.
J'ai rencontré un tas de chiffres sur le code HTML DIV dessin versus Toile-dessin. Je pourrais faire une énorme post sur les avantages de chacun, mais je vais donner les résultats de mes tests à prendre en compte pour votre application spécifique:
J'ai fait de Toile et de DIV HTML des pages de test, tous les deux avaient mobile "nœuds". Toile, les nœuds étaient des objets que j'ai créé et gardé la trace de en Javascript. HTML nœuds ont été mobiliers Divs.
J'ai ajouté de 100 000 nœuds pour chacun de mes deux tests. Ils ont joué de façon très différente:
Le test HTML onglet a pris une éternité à se charger (chronométré à légèrement moins de 5 minutes, chrome a demandé de tuer la page la première fois). Google Chrome, le gestionnaire des tâches indique que onglet prennent 168MB. Il prend de 12 à 13% de temps CPU quand je suis en train de regarder, 0% quand je ne suis pas à la recherche.
La Toile onglet chargé en une seconde et prend jusqu'à 30 MO. Il prend également en hausse de 13% de temps CPU à tout moment, indépendamment de si oui ou non on est en la regardant. (2013 edit: Ils ont généralement fixe)
Glisser sur la page HTML est plus lisse, ce qui est prévu par la conception, depuis la configuration actuelle est de redessiner TOUT toutes les 30 millisecondes dans la Toile de test. Il y a beaucoup d'optimisations pour les toiles pour cette. (toile d'invalidation étant le plus facile, aussi des régions de découpage sélectif de redessiner, etc.. tout dépend de combien vous vous sentez comme la mise en oeuvre)
Il n'y a aucun doute que vous pourriez obtenir en Toile pour être plus rapide lors de la manipulation d'objets comme des divs dans ce test simple, et bien sûr beaucoup plus rapide dans le temps de chargement. Dessin/de chargement est plus rapide dans la Toile et a beaucoup plus de place pour les optimisations, trop (c'est à dire, à l'exclusion des choses qui sont hors de l'écran est très facile).
Conclusion:
- SVG est probablement mieux pour les applications et les applications avec peu d'éléments (moins de 1000? Dépend vraiment)
- La toile est mieux pour des milliers d'objets et de soin dans la manipulation, mais beaucoup plus de code (ou une bibliothèque) est nécessaire pour l'obtenir sur le sol.
- HTML Divs sont maladroit et ne sont pas à l'échelle, faire un cercle n'est possible qu'avec des coins arrondis, de réaliser des formes complexes est possible mais implique des centaines de minuscules minuscules pixels de large divs. La folie s'ensuit.