类似桌面的Web应用程序中面向对象的设计

时间:2012-06-18 13:19:37

标签: javascript python oop

我正在努力建立一个小型的webapp,我希望它具有类似桌面的感觉。应用程序将在后端使用python,我将在Web端使用手工编码的javascript(在jquery等之上)。我有一些对象,我想在两者之间来回传递,并想知道人们如何处理这个问题。作为一个例子,我有一个“过滤器”,我将其视为一个对象:

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

人们如何做到以下几点:

  1. 一个位置定义类(以便服务器端和客户端都获得定义)
  2. 方便地定义用户交互(表单字段,外观等)
  3. 将数据传入/传出服务器/客户端。使用序列化表格,json,获取/发布或html?
  4. 保持客户端和服务器与来回传递的“对象”保持同步。

3 个答案:

答案 0 :(得分:1)

看看Knockout。它是这种Web开发的一个很好的框架,包括一个用户与动态绑定交互,向服务器发送/接收数据以及自动数据模型同步的视图模型。

答案 1 :(得分:1)

您也可以查看backbonejs

  

Backbone.js通过提供具有键值绑定和自定义事件的模型,具有可枚举函数的丰富API的集合,具有声明性事件处理的视图,并通过RESTful JSON将其全部连接到现有API,为Web应用程序提供结构接口

另一个名为emberjs的js库似乎比backbonejs做得更多。:

  

Ember.js(以前称为SproutCore 2.0)是一个JavaScript框架,可以完成您通常必须手动执行的所有繁重任务。每个Web应用程序都有一些共同的任务; Ember.js为您做这些事情,因此您可以专注于构建杀手级功能和UI。以下是使Ember.js使用的三个特性:(1)绑定,(2)计算属性和(3)自动更新模板。

详细了解github repo

答案 2 :(得分:1)

  1. 在服务器上使用nodejs是我知道服务器和客户端可以读取单个js文件的唯一方法。为移动应用程序UI交互开发Cordova js库的人们一直在研究require js的语法模式,以使客户端(浏览器)和服务器(节点js)可以读取文件。我的应用程序不使用任何种类的这种架构,所以我不能完全说话,但我会仔细研究这种可能性,以便进行下一次编码升级。
  2. 我不确定定义用户交互的意思。对于事件监听器,试验和错误(& stackoverflow)教会我使用object.addEventListener()来实现跨浏览器和跨设备兼容性。对于远程调用服务器,我想创建一个帮助方法来代理我的所有调用。我发现这是处理我的服务器返回的所有成功和错误消息的最简单方法。
  3. 如果您拥有对最终用户(例如Intranet)的控制权,并且您可以合理地假设每个人都在使用现代浏览器,那么XMLHttpRequest()将很好地完成工作。如果您没有这种控件,并且需要支持旧版本的IE,我建议使用诸如jQuery($ .ajax())之类的库。所有这些都假设你想要使用AJAX设计模式。 Websockets是新的狂热,在拨打服务器时提供更好的响应时间。 Websockets很难设置和处理完全不同的模型。使用AJAX,您可以调用服务器,然后获得响应。使用websockets,您可以“订阅频道”并独立发送和接收消息。这意味着客户端A可以向服务器发送一些信息,然后服务器可以将相同的数据发送到客户端B,而客户端B不会先询问。我知道有几个库你可以使用python我几个月前在我自己的研究中遇到过。当使用AJAX时,我更喜欢在控制服务器时POST数据,以便更容易看到不熟练的黑客的数据。为了打包我的数据,我喜欢使用原生的js Dom方法来构建JSON对象,因为我是OCD关于在发送之前验证表单数据。然后,我使用JSON.stringify()使我的数据准备好发送。
  4. 不完全理解这个问题。您的对象在服务器上的范围是什么?应用程序级别,客户端级别,用户级别?根据应用程序的需要,可以通过许多不同的方式处理。如果您使用websockets作为通信技术,您的服务器可以自动发送更新,而无需先从浏览器请求。如果使用AJAX,客户端将不得不要求更新或使用诸如长轮询之类的技术来模拟websocket之类的通信。
相关问题