Смешивание холста HTML5 и Python

Я использовал оба этих (Python и HTML5) отдельно, однако я очень хочу использовать всю мощь Python через Интернет, используя HTML5, чтобы рисовать вещи и обрабатывать клиентскую сторону вещей. Наверное, я ищу пути, чтобы пойти вниз с точки зрения реализации. Вот несколько вещей, которые я хотел бы сделать, если это возможно:

  • Имейте очень интерактивные данные, которые должны обрабатываться на стороне сервера Python, но отображаться и локально управляться с помощью холста HTML5.
  • Доступные для клика компоненты на холсте HTML5, которые будут взаимодействовать со стороной сервера.

Есть ли такая возможность, которую люди могут рекомендовать? То есть Google App Engine был бы хорош. Django? Пижама?

Спасибо - извиняюсь, если это кажется немного расплывчатым. Я спрашиваю, прежде чем попробовать один путь, чтобы увидеть, есть ли хед-ап, чтобы сэкономить время и усилия.

Ответ 1

В этом случае серверная сторона гораздо более развита, чем клиентская. (Богатые библиотеки JS - это новое явление, все.) Django - приемлемый выбор на сервере, хотя я бы хотя бы рассмотрел Twisted.

Моя рекомендация на стороне клиента:

  • Первый вариант paper.js, который является библиотекой для манипулирования холстом. Отличная производительность, позволяет привязывать события, богатые графические операции, учебные пособия являются фантастическими. Похоже, что у него очень мягкая кривая обучения, по сравнению с аналогичным программным обеспечением.

  • Второй выбор - raphael или аналогичная библиотека SVG. Производительность не так хороша, как paper.js, хотя она сильно зависит от того, что будет на экране.

Можете ли вы рассказать о том, какие вещи вы будете делать на клиенте? Количество видимых объектов, какие события будут привязаны к каким объектам, типам графических фильтров, которые вам нужны, и т.д., Все это сильно сообщают об этом выборе.

Вероятно, вы столкнетесь с тем, что будете добиваться хорошей графической производительности на клиенте, поэтому рассчитывайте потратить на это много времени.

Изменить: основываясь на ваших комментариях, я думаю, что вы найдете решение приемлемым, поэтому я склоняюсь к paper.js только потому, что это немного веселее, и если вы действительно пойдете куда-нибудь неожиданным, он сможет туда пойти с вы.

Поскольку ваше приложение звучит так, как будто оно связано с большим количеством графиков, я бы предложил вам проверить HighCharts или другую графическую библиотеку, из которых есть несколько, как коммерческих, так и некоммерческих. Сам HighCharts бесплатный для всех, кроме использования продукции в некоммерческом приложении, и по разумным ценам.

Ответ 2

Я делаю именно то, что вы упомянули, используя Django на стороне сервера и HTML5 canvas/javascript на стороне клиента. Я очень доволен результатами, но хочу отметить, что то, что вы делаете с Canvas на стороне клиента, не имеет никакого отношения к тому, что вы используете на стороне сервера для Python.

Ответ 3

Жизнеспособный подход для такого богатого клиентского виджета, как это, заключается в использовании стека вроде:

  • [ваш пользовательский интерфейс javascript]
  • [js lib для вашей графики]
  • backbone.js для управления клиентскими объектами ваших объектов.
  • django-tastypie для переноса ваших объектов django в API RESTful
  • django для определения вашего бэкэнд