簡體   English   中英

App Engine (python) 中的 MVC、GUI + 交互式可視化有哪些選擇?

[英]What are my options for MVC, GUI + Interactive Visualization in App Engine (python)?

我正在創建一個允許用戶查詢、操作和探索非常大的圖表的應用程序。

為我的項目創建 gui + 可視化的“最佳”方式是什么?

最好的意思是:
1.符合web標准,無味月解決方案
2.允許創造性的靈活性
3. 直觀,不需要數周的學習和數月的掌握

我應該開始深入研究 Django 並了解它的 MVC 是如何工作的嗎? 我在 Django 上讀到的所有內容都很糟糕,但似乎是 GAE 最常用的選項。

如果這不連貫,我很抱歉。 這些技術超出了我的舒適區,所以我在尋找解決方案和表達我的問題時遇到了麻煩。

App Engine 在 UI 方面非常靈活。 Python 支持 Django 模板(0.96 開箱即用,1.2 帶有一行配置更改)。 Django 模板易於使用,與 JavaScript 工具包無關。 我使用 jQuery,但這是 App Engine 不會強加的個人選擇。 在 UI 方面,它是一個安全的選擇,您可以隨時學習 Django 模板語言和 jQuery 可以移植到 App Engine 之外。 我在 Django 上沒有看到很多小便,但也許我在不同的地方閑逛。

盡管您強調的是 UI 方面,但我還是先看看如何將您的大圖 map 放到 App Engine 數據存儲區,以及針對您的圖的查詢將如何執行。 App Engine 數據存儲區的細微差別經常讓那些擁有豐富關系經驗並期望表和真正外鍵的人感到困惑。 它非常適合存儲圖表,但值得探索和原型化您的查詢,以便您知道自己在做什么。

App Engine SDK 非常適合本地(例如,咖啡店的筆記本電腦)開發。

不過,我有點偏頗。

它必須在 python 中嗎? GAE 對 GWT 有很好的支持。 GWT eclipse 插件無需進一步修改即可直接編譯和部署到 GAE。 滿足您所有三個要求的最佳解決方案是使用 GWT + GAE/J。

如果您主要是在尋找圖表/繪圖解決方案,那么有一些基於 Flash *gasp* 的很好的解決方案,它們非常易於使用,例如 AnyChart。

作為旁注,如果您正在設計任何 UI,了解和理解 MVC 模式是必不可少的。 大多數其他 UI 設計模式都是 MVC 的衍生品,因此無論您選擇哪種框架,您都可能正在學習 MVC。

祝你好運
-tjw

考慮到您的第三個要求:查看類似Protovis 交互式圖形可視化或此Infovis 圖形示例代碼)的內容。 我不知道你的任務的 scope 但如果你幸運的話,你可能不需要 go 太深入 MVC 雜草。 以第二個例子為例,web 后端的作用只是 1) 提供一些 json object 以及您需要布置的信息,以及 2) 處理響應。 (順便說一句,所有這些鏈接都是開源的並且有據可查。)更具體地說,假設您有一個帶有這樣的界面的圖形: http://thejit.org/static/v20/Jit/Examples/Hypertree/example3.html格式化來源)。 它看起來如何的輪廓可能很簡單:

偽 HTML:

<a_canvas_svg_or_webgl_object id="your_surface"> ... </a_canvas...>

<script src="... // one of the above visualization libraries

<script>
selector(#your_surface...
data = json.gets("/graph/minard/data.json"); //typical method name in these libs
data.do_stuff()   // bunch of methods from the visualization guys...
                  // save state/user input to json object
button.onclick... // do an ajax post to an url like "/graph/a/data.json?extent=1234"
                  // use something like query string ie, for when 'extent' changes
etc...

然后在服務器上(示例是與 GAE 兼容的微框架 Flask偽代碼(但不是那個偽代碼)):

@app.route('/')
def frontpage():
    return render_template('your_front_page.html')

@app.route('/graph/<graph_name>/<kind>')
def backend():
    if request.method == 'POST':
        gql_foo.save_user_stuff(request.json)
    if request.method == 'GET':
        if kind == 'data.json':
            relevant_part_of_graph = request.args['extent']
            requested_data = jsonify(db_query(parameters=graph_name...
            return requested_data
    else:
        return 404

如果這些都與您的應用程序空間沒有足夠的重疊,那么您至少可以通過查看d3來從這個答案中得到一些東西,這有點低級。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM