Para los lectores recientes, a enero de 2013, evalué:
- Cinético
- Tela
- Papel
- Caballete
Con "evaluado", hice algo más que leer los documentos; Creé una aplicación prototipo.
Empecé con Fabric porque parecía tener la comunidad más grande y pensé que sería mi solución. Pero renuncié a Fabric por las siguientes razones:
- incoherencias de API extrañas e indocumentadas que consumieron gran parte de mi tiempo innecesariamente.
- soporte de evento de puntero inconsistente. Específicamente, Fabric no considera que un "Camino" sea un objeto de forma real que sea seleccionable y observable. Esto no satisfizo mis necesidades ya que las rutas interactivas son un requisito importante de mi aplicación.
- entre bastidores, adiciones de traducciones al lienzo para colocar objetos. Para mí, Fabric intenta ser demasiado inteligente en este sentido sin dejar claro al desarrollador lo que está haciendo.
- Opinión demasiado fuerte sobre cómo funciona la interactividad mover, redimensionar y rotar. En muchos sentidos, es genial tener esta funcionalidad integrada en el marco pero, en mi caso, no estaba de acuerdo con la forma en que se implementó, lo que significaba esencialmente tener que volver a implementarlo yo mismo de todos modos.
- documentación escasa - muchos de los casos en los que la documentación de un método tiene la forma: "setX (Y) - establece la X en Y" :-)
Eché un vistazo a Paper y no llegué demasiado lejos. Me pareció demasiado obtuso y también se encuentra entre demasiado taburetes en mi opinión: es una biblioteca de visualización demasiado grande para ser un modelo de objeto simple para Canvas, pero no es una biblioteca de visualización suficiente para competir con D3. Además, la documentación nuevamente no era particularmente accesible.
Creo que Easel probablemente tenga mucho sentido si tienes experiencia en Flash / ActionScript, pero yo no. Además, parecía demasiado centrado en el juego para mis requisitos. El clavo en el ataúd fue nuevamente documentación, no suficiente y presentada en un formato no estándar.
Entonces, terminé eligiendo Kinetic porque:
- tutoriales y ejemplos realmente ricos y claros
- Las funciones de API hacen lo que se les llama y se pueden adivinar en gran medida: productividad más rápida, curva de aprendizaje menos profunda
- tiene razonablemente claro lo que hace y lo que no; no es tan rico como algunos de los otros, pero eso es un beneficio; hace menos cosas pero las hace mejor
- Los caminos son Formas ciudadanas de primera clase, como cualquier otra Forma, lo cual era esencial para mis requisitos.
Kinetic no es perfecto de ninguna manera y ha habido algunas ocasiones en las que tuve que profundizar en el código fuente para averiguar qué está pasando realmente bajo las sábanas. Además, extraño el análisis y la salida de SVG de Fabric.