2012-06-18 43 views
0

我正在努力實現一個小型的Web應用程序,我希望對桌面具有這種感覺。應用程序將在後端使用python,並且我將在Web端使用手寫編碼的javascript(在jquery之上等)。我想要在兩者之間來回傳遞一些對象,並想知道人們如何處理這個問題。舉個例子,我有一個「過濾器」,我會處理作爲一個對象:類似桌面的Web應用程序中的面向對象設計

filter: { 
    name:'genericGeneFilter', 
    type:'geneFilter', 
    symbol:'ExampleSymbol', 
    includeExclude:'include'} 

如何鄉親做到以下幾點:

  1. 定義在一個地方(這樣的類服務器端和客戶端都可以定義)
  2. 方便地定義用戶交互(表單域,外觀等)
  3. 將數據傳遞到服務器/客戶端。使用序列化表單,json,gets/posts或html?
  4. 使客戶端和服務器保持與來回傳遞的「對象」同步。

回答

1

您也可以通過提供鍵值型號的枚舉功能豐富的API綁定和自定義事件,集合看看backbonejs

Backbone.js的賦予結構的Web應用程序,與聲明的看法事件處理,並通過RESTful JSON接口將其全部連接到現有的API。

還有一種叫emberjs JS庫,似乎做多backbonejs:

Ember.js得多(以前了SproutCore 2.0)是一個JavaScript框架,做所有繁重的你通常必須手工完成。每個Web應用程序都有相同的任務; Ember.js爲你做了這些事情,所以你可以專注於構建殺手級功能和用戶界面。這些是使Ember.js使用的三個特性:(1)綁定,(2)計算屬性和(3)自動更新模板。

瞭解更多關於他們的github repo

+1

根據你的回答以及js1568的回答,我找到了這個小貼子:http://codebrief.com/2012/01/the-top-10-javascript-mvc-frameworks-reviewed/ – seandavi

+0

那麼,什麼是你們當中的贏家? http://emberjs.com/? –

+0

我將該庫添加到我的答案僅供參考。 thanx提到它。 –

1

看看Knockout。它是這種Web開發的一個很好的框架,包括用戶與動態綁定交互的視圖模型,向服務器發送/接收數據以及自動數據模型同步。

1
  1. 使用上的NodeJS你的服務器是我所知道的,其中包括服務器和客戶端可以讀取一個js文件的唯一途徑。開發用於移動應用程序用戶界面交互的Cordova js庫的開發人員一直在研究require js的語法模式,以使它們的文件可由客戶端(瀏覽器)和服務器(節點js)讀取。我的應用程序沒有使用任何種類的這種架構,所以我不能充分說明它,但我會仔細研究下一次編碼升級的可能性。
  2. 我不確定你定義的用戶交互是什麼意思。對於事件監聽器,試驗和錯誤(& stackoverflow)教會了我使用object.addEventListener()進行跨瀏覽器和跨設備兼容性。對於遠程調用服務器,我喜歡創建一個輔助方法來代理我的所有呼叫。我發現這是處理我的服務器返回的所有成功和錯誤消息的最簡單方法。
  3. 如果你有最終用戶(如內聯網)的控制權,並且你可以合理地假設每個人都使用現代瀏覽器,那麼XMLHttpRequest()將很好地完成這項工作。如果你沒有那種控制,並且需要支持IE的老版本,我會建議使用一個庫,比如jQuery($ .ajax())。所有這一切都假設你想使用AJAX設計模式。網絡套接字是全新的風格,並在撥打服務器電話時提供更好的響應時間。 Websockets的設置和工作完全不同的模型非常複雜。使用AJAX,您可以調用服務器,然後獲得響應。使用websocket,您可以「訂閱頻道」,並且可以獨立發送和接收消息。這意味着客戶端A可以向服務器發送一些信息,然後服務器可以將相同的數據發送給客戶端B,而無需客戶端B首先詢問。我知道有幾個圖書館可以用於Python,這是我在幾個月前的研究中遇到的。在使用AJAX時,我更喜歡在控制服務器時對POST數據進行操作,以便讓看到非技術黑客數據的難度稍微降低。爲了打包我的數據,我喜歡使用原生js Dom方法來構建JSON對象,因爲我是在發送之前驗證表單數據的OCD。然後,我使用JSON.stringify()使我的數據準備好發送。
  4. 不完全理解這個問題。你的對象在服務器上的範圍是什麼?應用程序級別,客戶端級別,用戶級別?這可以根據應用需求以多種不同的方式處理。如果您使用websockets作爲您的通信技術,則您的服務器可以自動發送更新,而無需先從瀏覽器請求。如果使用AJAX,客戶端必須要求更新或使用諸如長輪詢等技術來模擬websocket之類的通信。