Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
Javascript 渐进式增强-Node.js、Backbone.js_Javascript_Node.js_Backbone.js_Progressive Enhancement - Fatal编程技术网

Javascript 渐进式增强-Node.js、Backbone.js

Javascript 渐进式增强-Node.js、Backbone.js,javascript,node.js,backbone.js,progressive-enhancement,Javascript,Node.js,Backbone.js,Progressive Enhancement,node.js服务器有两个角色: 带前缀/API的路由上的RESTFul API 在其他路线上呈现网站页面(//计划/功能/条款…) 目前,我的所有页面都呈现一个“加载页面…”与主干应用程序相结合,该应用程序在Backbone.router启动时替换DOM 我希望在用户到达页面时在服务器端构建网站页面,并在用户在网站上导航时让主干网处理导航的下一部分 我知道如何在服务器端,但在客户端当一个页面加载了已经构建的DOM时,Backbone.router加载并替换DOM,因为它不知道视图已经预加载

node.js服务器有两个角色:

  • 带前缀/API的路由上的RESTFul API
  • 在其他路线上呈现网站页面(//计划/功能/条款…)
目前,我的所有页面都呈现一个“加载页面…”与主干应用程序相结合,该应用程序在Backbone.router启动时替换DOM

我希望在用户到达页面时在服务器端构建网站页面,并在用户在网站上导航时让主干网处理导航的下一部分

我知道如何在服务器端,但在客户端当一个页面加载了已经构建的DOM时,Backbone.router加载并替换DOM,因为它不知道视图已经预加载

如何在客户端修复它

代码:

  • 路由器:

  • 主视图:

  • 术语视图:

更新:新代码:

现在,我需要在第一次加载时调用runSlider方法。

当您启动历史记录时,确保将
{silent:true}
作为一个选项传递给Backbone,让它知道您已经加载了一个完整的页面。这将防止路由器在视图已预加载(第一次)时替换DOM

从:

如果服务器已经呈现了整个页面,并且您不希望在启动历史记录时触发初始路由,请传递
silent:true

因此,您的代码应该如下所示:


Backbone.history.start({pushState:true,silent:true})

你也能提供一些视图吗?当然,术语视图:我刚刚添加了home viewNice,这正是我想要的。但问题是,我如何开始比赛?例如,在我的主页上,我有一个滑块,init方法在HomeView中。对于RequireJS,我无法访问任何视图。我不确定我是否真的理解这个问题。当您执行
this.homeView=new homeView()时
,其中,
homeView
是您的homeView由RequireJS加载的,将调用
homeView
上的
initialize
函数。好的,我在homeView中有一个滑块,它由runSlider()方法初始化。加载HomeView时,需要调用此方法runSlider()。我在render中调用它,但在第一次加载时不调用render(silent:true)。但是如果我也在initialize中调用它,它将在所有视图上被调用(我的路由器在其initialize中加载所有视图)。因此,在第一次加载时,不再调用initialize方法。如何在HomeView上运行滑块?如何在首次加载时在HomeView上运行滑块?