2012-02-28 37 views
11

Tôi đã sử dụng cả hai (Python và HTML5) một cách riêng biệt, tuy nhiên tôi muốn sử dụng toàn bộ sức mạnh của Python trên web bằng cách sử dụng HTML5 để vẽ mọi thứ và xử lý phía máy khách của mọi thứ. Tôi đoán tôi đang tìm kiếm con đường để đi xuống về thực hiện. Dưới đây là một số điều tôi muốn làm nếu có thể:Trộn HTML5 Canvas và Python

  1. Có dữ liệu rất tương tác cần xử lý phía máy chủ bằng Python nhưng được hiển thị và được thao tác cục bộ bởi Canvas HTML5.
  2. Thành phần có thể nhấp trên Canvas HTML5 sẽ liên lạc với phía máy chủ.

Có triển khai nào mà mọi người có thể đề xuất không? I E. Google App Engine có tốt không. Django? Pyjama?

Cảm ơn - xin lỗi nếu điều này có vẻ hơi mơ hồ. Tôi đang hỏi trước khi thử một con đường để xem liệu có một người đứng đầu để tiết kiệm thời gian và công sức không.

+0

Suy nghĩ về điều này, có cách nào để nhận sự kiện trên canvas HTML5 bằng python không? – Androidian

+0

Suy nghĩ về điều này, có cách nào để nhận sự kiện trên canvas HTML5 bằng python không? Vì vậy, ví dụ nếu một mở rộng dòng thời gian dữ liệu trong phần tử canvas vẽ, con trăn sẽ thực hiện một số xử lý trên dữ liệu và gửi lại dữ liệu đã xử lý cho phần tử canvas để hiển thị. – Androidian

+0

Có ai có kinh nghiệm sử dụng Pyjamas không? Dường như nó sẽ xử lý các con đường JS/Python nhưng tôi không có ý tưởng về HTML5? – Androidian

Trả lời

11

Phía máy chủ được phát triển hơn nhiều so với phía máy khách trong trường hợp này. (Thư viện JS phong phú là một hiện tượng mới hơn, là tất cả.) Django là một sự lựa chọn chấp nhận được trên máy chủ, mặc dù tôi ít nhất cũng sẽ xem xét Twisted.

Khuyến cáo của tôi trên các mặt hàng:

  1. sự lựa chọn đầu tiên là paper.js mà là một thư viện cho các thao tác canvas. Hiệu suất tuyệt vời, cho phép sự kiện ràng buộc, hoạt động đồ họa phong phú, hướng dẫn là tuyệt vời. Dường như có một đường cong học tập rất nhẹ nhàng, so với phần mềm tương tự.

  2. Lựa chọn thứ hai là raphael hoặc thư viện SVG tương tự. Hiệu suất không hoàn toàn tốt như paper.js mặc dù nó phụ thuộc rất nhiều vào những gì sẽ được trên màn hình.

Bạn có thể giải thích về những việc bạn sẽ làm cho khách hàng không? Số đối tượng hiển thị, những sự kiện nào sẽ bị ràng buộc với đối tượng, loại bộ lọc đồ họa nào bạn cần, v.v., tất cả đều thông báo sự lựa chọn này rất nhiều.

Có thể bạn sẽ thấy mình chiến đấu để có được hiệu suất đồ họa tốt trên máy khách, vì vậy, hãy dành nhiều thời gian cho việc đó.

Chỉnh sửa: Dựa trên nhận xét của bạn, tôi nghĩ bạn sẽ tìm thấy giải pháp khả thi, vì vậy tôi sẽ hướng tới paper.js chỉ vì nó thú vị hơn một chút và nếu bạn đi đâu đó bất ngờ, nó sẽ có thể đến đó với bạn.

Vì ứng dụng của bạn có vẻ giống như rất nhiều biểu đồ, tôi khuyên bạn nên xem HighCharts hoặc thư viện biểu đồ khác, trong đó có một số, cả thương mại và không. HighCharts chính nó là miễn phí cho tất cả mọi thứ ngoại trừ sử dụng sản xuất trong một ứng dụng vì lợi nhuận, và giá cả hợp lý khác.

+0

Rất nhiều trải nghiệm người dùng sẽ chọn dữ liệu từ các ô và đường cong, vì vậy nó có khả năng thực sự rất chuyên sâu. Các ràng buộc tốt là rất quan trọng và chúng tôi sẽ phải làm việc rất chăm chỉ khi bạn đề xuất để đồ họa chạy mượt mà nhất có thể trên tất cả các nền tảng. – Androidian

+0

Có lẽ một minh họa tốt hơn về những gì chúng tôi muốn làm là rất giống với những gì google thực hiện với dữ liệu tài chính của nó, ví dụ như tài chính, nhưng đối với một khu vực rất khác, nhưng chúng tôi cần hiển thị dữ liệu phụ thuộc vào phạm vi thời gian. – Androidian

2

Một cách tiếp cận khả thi cho một widget khách hàng giàu có như thế này là sử dụng một chồng như:

  • [javascript giao diện người dùng của bạn]
  • [a js lib cho đồ họa của bạn]
  • backbone.js để quản lý đối tượng của bạn phía khách hàng
  • django-tastypie để gói các đối tượng django của bạn trong API RESTful
  • django để xác định phụ trợ của bạn
4

Tôi làm chính xác những gì bạn đã đề cập bằng cách sử dụng Django ở phía máy chủ và HTML5 canvas/javascript ở phía máy khách. Tôi khá hài lòng với kết quả nhưng muốn chỉ ra rằng những gì bạn làm với Canvas ở phía máy khách không có liên quan gì đến những gì bạn sử dụng ở phía máy chủ cho Python.