实时数据绑定的JavaScript

我已经有了这个要求,我不是很成功地突破客户端技术。 希望有人可能已经解决了这样的难题,我不想再打破我的头,耽误了我的时间。

我的要求是:

  • 我有一台服务器,它有一个数据处理引擎,平均每30秒就会提供一个数据库。
  • 我需要一个客户端Web应用程序,我想根据我的服务器引擎生成的数据绘制一些图。
  • 我可以find适合我的图表需求(Flotr2)
  • 我已经为我的后端数据stream设置了一个Node.js服务器和socket.io comm。

我可以简单地使用普通的js和调用函数来绘制graphics来监听套接字。

但是,我的应用程序必须是高度可configuration的。 我想从数据库的多个列数据绘制单个graphics,以满足我的要求(这意味着,在单个元素的多个值)。

如果我使用普通的JavaScript来实现我的客户端,那么在某些时候,我的代码将变得无法维护,而且我可能正在重新创build现有的轮子。

所以,我正在寻找客户端库进行数据绑定(一个值到一个元素,多个值到单个元素,多个值到多个元素)

我基本上是一个后端和移动的家伙,但不是JS的家伙。 我浏览网页,并得到一些随机的build议,使用Knockout.Js,Angular.js,Backbone.js,Meteor.js,我不能依靠一个。

编辑:

我已经尝试了Knockout.js来进行客户端数据绑定。 我坚持我的第二个和第三个用例( 许多值单个元素和许多元素值 )。

假设从服务器得到{“a”:55,“b”:5,“c”:46}作为数据。 我有两个id为“x”,“y”的HTML元素。 我想将值a,b绑定到元素“x”,将值b,c绑定到元素“y”。 可能吗? 任何简单的小提琴将是很大的帮助。

那么,有人可以指出我的正确方向,在这里分享你的想法。

knockout.js – 适合与您的视图绑定的数据。 学习曲线less,易于实现。

angular.js – 这是一个完整的客户端框架(MVC / MVVM)。 提供控制器,服务和模块来构build您的前端。 数据绑定只是angular.js作业的一部分。 你需要更多的时间学习,因为它比基因敲除更复杂。

ember.js – 如果数据数据更新频率高,渲染性能对您来说是一个问题,这也是一个选项。 在ember中,渲染性能比angular.js和knockout.js要高得多(根据我的经验,在得出结论之前,对你的数据模型做一些testing,支持浏览器)。

还有一些更好的framework.js框架可以满足您的需求。 但我没有任何经验。

好读http://weblogs.asp.net/dwahlin/javascript-data-binding-frameworks

编辑1:

knockout.js计算的函数可以用来将多个值绑定到一个元素。

查看模型

var self = this; self.valueA = ko.observable(55); self.valueB = ko.otbservable(5); self.valueC = ko.otbservable(46); self.valueX = ko.computed(function(){ return self.valueA() + self.valueB(); }); self.valueY = ko.computed(function(){ return self.valueB() - self.valueC(); }); 

HTML

 Value X, <span data-bind='text: valueX'> </span> Value Y, <span data-bind='text: valueY'> </span> 

看这里的例子http://www.knockmeout.net/