2012-02-28 20 views
11

He usado ambos (Python y HTML5) por separado, sin embargo, estoy ansioso por usar todo el poder de Python en la web usando HTML5 para dibujar cosas y manejar el lado del cliente. Supongo que estoy buscando avenidas para bajar en términos de implementación. Aquí hay algunas cosas que me gustaría hacer si es posible:Mezcla HTML5 Canvas y Python

  1. Disponen de datos muy interactivos, que necesitarán ser procesados ​​por el lado del servidor de Python pero visualizados y manipulados localmente por HTML5 Canvas.
  2. Componentes seleccionables en el Canvas de HTML5 que se comunicarán con el lado del servidor.

¿Existe alguna implementación que la gente pueda recomendar? Es decir. sería Google App Engine bueno. Django? ¿Pijama?

Gracias - me disculpo si esto parece un poco vago. Pregunto antes de probar una ruta para ver si hay un aviso para ahorrar tiempo y esfuerzo.

+0

Pensando en esto, hay una manera de recoger los acontecimientos sobre el canvas de HTML5 con Python? – Androidian

+0

Pensando en esto, ¿hay alguna forma de recoger eventos en el lienzo de HTML5 con python? Entonces, por ejemplo, si uno amplía la línea de tiempo de datos en un elemento dibujado de lienzo, la python procesará los datos y enviará los datos procesados ​​para que se muestre el elemento lienzo. – Androidian

+0

¿Alguien tiene alguna experiencia con el uso de pijamas? Parece que manejaría las rutas de JS/Python, pero no tengo idea sobre HTML5. – Androidian

Respuesta

11

El lado del servidor está mucho más desarrollado que el lado del cliente en este caso. (Las bibliotecas Rich JS son un fenómeno más nuevo, es todo.) Django es una opción aceptable en el servidor, aunque al menos consideraría Twisted.

Mi recomendación sobre el lado del cliente:

  1. La primera opción es paper.js que es una biblioteca para la manipulación de la lona. Excelente rendimiento, permite el enlace de eventos, operaciones de gráficos enriquecidos, tutoriales son fantásticos. Parece tener una curva de aprendizaje muy suave también, en comparación con un software similar.

  2. La segunda opción sería raphael o una biblioteca similar de SVG. El rendimiento no es tan bueno como el de paper.js aunque depende mucho de lo que aparecerá en la pantalla.

¿Puede explicar qué tipo de cosas hará con el cliente? El número de objetos visibles, qué eventos estarán vinculados a qué objetos, los tipos de filtros gráficos que necesita, etc., informan esta elección en gran medida.

Probablemente te encuentres luchando para obtener un buen rendimiento de gráficos en el cliente, así que espera pasar mucho tiempo con eso.

Editar: En base a sus comentarios, creo que encontraría una solución viable, por lo que me inclinaría hacia paper.js solo porque es un poco más divertido, y si va a un lugar inesperado, podrá ir allí con usted.

Dado que su aplicación parece que tiene que ver con una gran cantidad de gráficos, le sugiero que consulte HighCharts u otra biblioteca de gráficos, de los cuales hay varios, comerciales y no comerciales. Highcharts en sí es libre para todo excepto uso en producción en una aplicación con fines de lucro, ya un precio razonable lo contrario.

+0

Una gran parte de la experiencia del usuario será seleccionar datos de trazados y curvas, por lo que es probable que sea muy intenso. Las buenas vinculaciones son cruciales y tendremos que trabajar muy duro, ya que sugiere que los gráficos se ejecuten de la manera más suave posible en todas las plataformas. – Androidian

+0

Tal vez una mejor ilustración de lo que queremos hacer es muy similar a lo que hace Google con sus datos financieros es decir finance.google.com, pero para una zona muy diferentes, pero tenemos que mostrar los datos depende de la escala de tiempo. – Androidian

2

Un enfoque viable para un widget de cliente rico como esto es el uso de una pila como:

  • [javascript interfaz de usuario] [
  • un js lib para sus gráficos]
  • Backbone.js para la gestión de los objetos del lado del cliente
  • django-tastypie para envolver los objetos de Django en una API REST
  • Django para definir su base de
4

Hago exactamente lo que ha mencionado usando Django en el lado del servidor y HTML5 canvas/javascript en el lado del cliente. Estoy muy contento con los resultados, pero me gustaría señalar que lo que haces con un lienzo en el lado del cliente no tiene nada que ver con lo que usas en el lado del servidor para Python.