BackboneJS /实时SPA - 我不明白吗?

时间:2013-10-15 08:43:34

标签: asp.net-mvc backbone.js signalr

我想这将是我的第一个封闭式问题,但无论如何: 我开始用BackboneJS,ASP.NET MVC + SignalR服务器端实时开发实时单页面应用程序(因为Web 3.7)。想法是这样的:

  • App通过SignalR加载并启动与服务器的连接。
  • 导航到某个页面时,页面设置SignalR客户端功能,它将处理收到的数据并将其显示给用户并告诉服务器发送有关该数据的更新等。

现在,服务器端对我来说非常清楚。但与客户方面不同 - 我什么都不懂。官方BackboneJS文档非常基础,所有其他教程都涉及静态模型和REST API。

Wiews - 所有示例都显示视图存在于“index.html”中,并使用REST API中的静态模型进行渲染。我将拥有至少7个非常大的HTML和脚本视图,因此将它们保存在我的“index.html”中并不是一个真正的选择。我没有发现任何关于加载远程视图的问题,而我自己只是想调用jQuery的load函数来加载视图。

所以只有静态页脚,标题和菜单,并将视图加载到#content DIV中真的不是SPA吗?这并非真正来自“正常”的Web应用程序,除了使用jQuery + load我得保持常量SignalR连接而不会真正导航离开“index.html”。

基本上我只使用Backbone进行路由而不是整页请求我将部分视图加载到主内容div中 - 我在这里设计了某种令人厌恶的东西,完全错误的SPA吗?

有关如何进行适当的实时单页应用的任何建议吗?

2 个答案:

答案 0 :(得分:0)

看看KO + Durandal,或者如果你想要一个更小的足迹库,看看我的小型SPA lib for KO

https://github.com/AndersMalmgren/Knockout.Bootstrap.Demo

我还为SignalR制作了一个Event聚合器代理,它与MVVM配合得非常好,一旦配置它就会自动将消息直接转发到VM。像

一样使用
TestViewModel = function () {
    signalR.eventAggregator.subscribe(MyApp.MyEvent, this.onMyEvent, this)
};

TestViewModel.prototype = {
    onMyEvent: function (message) {
        //act on my event
    }
};

维基:

https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki

使用nuget安装

Install-Package SignalR.EventAggregatorProxy

答案 1 :(得分:0)

你有没有看过使用Backbone.js和PubNub这样的发布商订阅者概念?这是一个链接,讨论如何使骨干,js与它一起工作,{{3} }。我希望尽快尝试使用我作为宠物项目工作的SPA,其中主要的index.html只是头部的一堆行,然后调用单个js文件包含所有视图模板,骨干模型和路由器。我的目标是将模型链接到来自其他地方发布的数据的订阅事件。不确定这是否有帮助,但是如果你感兴趣的话,请加载我的网站,然后看看它是如何构建的,将它拆开,也许它与你想要做的事情有点类似,Backbone with PubNub。目前,它仍然通过this.myModel.fetch({async:true});方法在周期性定时事件中提取数据,这很有效,但正如我所提到的,我很想让它使用像PubNub这样的推送技术。