0

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

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

人们如何执行以下操作:

  1. 在一个地方定义类(以便服务器端和客户端都获得定义)
  2. 方便地定义用户交互(表单字段、外观等)
  3. 向/从服务器/客户端传递数据。使用序列化表单、json、gets/posts 还是 html?
  4. 关于来回传递的“对象”,使客户端和服务器保持同步。
4

3 回答 3

1

你也可以看看backbonejs

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

还有另一个名为emberjs的 js 库,它的功能似乎比bonejs 多得多。:

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

在他们的github repo上阅读更多内容

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

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

于 2012-06-18T13:22:14.663 回答