Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc BackboneJS/实时SPA-我不知道';你不明白吗?_Asp.net Mvc_Backbone.js_Signalr - Fatal编程技术网

Asp.net mvc BackboneJS/实时SPA-我不知道';你不明白吗?

Asp.net mvc BackboneJS/实时SPA-我不知道';你不明白吗?,asp.net-mvc,backbone.js,signalr,Asp.net Mvc,Backbone.js,Signalr,我想这将是我的第一个封闭式问题,但无论如何: 我开始使用BackboneJS、ASP.NETMVC+SignalR服务器端开发实时单页应用程序(因为是Web3.7)。这个想法是: 应用程序通过信号器加载并启动与服务器的连接 导航到某个页面后,页面设置SignalR客户端功能,该功能将处理输入数据并将其显示给用户,并告诉服务器发送有关该数据的更新,等等 现在,服务器端对我来说非常清楚。但客户方面就不那么多了——我什么都不懂。BackboneJS官方文档非常基础,所有其他教程都涉及静态模型和RE

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

  • 应用程序通过信号器加载并启动与服务器的连接
  • 导航到某个页面后,页面设置SignalR客户端功能,该功能将处理输入数据并将其显示给用户,并告诉服务器发送有关该数据的更新,等等
现在,服务器端对我来说非常清楚。但客户方面就不那么多了——我什么都不懂。BackboneJS官方文档非常基础,所有其他教程都涉及静态模型和RESTAPI

Wiews—所有示例都显示视图位于“index.html”中,并使用RESTAPI中的静态模型呈现。我将有至少7个视图,这些视图相当大,包含大量HTML和脚本,因此将它们保留在我的“index.HTML”中并不是一个真正的选项。在加载远程视图方面,我没有发现任何东西,我只是想调用jQuery的
load
函数来加载视图

因此,只有静态页脚、页眉和菜单,并将视图加载到#content DIV中,这不是真正的SPA吗?这并不是真正的“普通”web应用程序,除了jQuery+
load
I可以保持恒定的信号器连接,而不必真正离开“index.html”

基本上,我使用主干网只是为了路由,而不是整页请求,我将部分视图加载到主内容分区中-我在这里设计了某种讨厌的东西,做SPA完全错了吗


关于如何进行适当的实时单页应用程序,有什么建议吗?

请查看KO+Durandal,或者如果您想要更小的内存库,请查看我的小型SPA库

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

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

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

使用nuget安装

Install-Package SignalR.EventAggregatorProxy

您是否考虑过将Backbone.js与发布者-订阅者概念结合使用?
这里有一个链接,介绍如何使Backbone.js与之配合使用
我希望很快就可以在一个我一直作为宠物项目工作的SPA中试用,其中main index.html只是head部分的一堆行,然后调用一个包含所有视图模板、主干模型和路由器的js文件。我的目标是让一个模型从别处发布的数据链接到订阅的事件。不确定这是否有帮助,但如果你感兴趣,加载我的网站,然后看看它是如何建立的,把它拆开,也许它有点类似于你想做的事情
目前,它仍然通过
this.myModel.fetch({async:true})提取数据方法,效果很好,但正如我所提到的,我很想让它与push技术(如PubNub)一起工作。

我发现DurandalJS(使用Knockout作为MVC/MVVM层,不指定数据层)在SPA框架中效果很好。它利用RequireJS可以轻松地将不同的视图/模型/控制器保存在不同的资源(文件)中—所有加载(如果需要)和资源管理都是自动的。不管怎样,使用DurandalJS/Knockout,一旦定义了模型(并在视图中合理地使用了模型),这只是一个更新模型并离开的问题——微风或信号器或任何自定义访问层,其实并不重要。同样形式的模型更新也是DurandalJS处理不同(主要)视图之间导航的方式。我将进一步研究它,到目前为止,我想要的是可绑定的淘汰对象,它将得到更新和视图管理。主干是为REST API构建的,因此它没有现成的WebSocket处理。主干+Socket.io有和这样的插件;我认为您可以采取类似的方法,用Signaler修补主干网。但使用支持开箱即用的双向绑定的框架可能更方便。