使用pushState进行快速和主干路由

时间:2012-10-04 21:42:37

标签: backbone.js express

我是这两种技术的新手,我想知道如何配置我的应用程序的最佳方式。我想没有hastags并只使用pushState。另外,从我最好的阅读,在渲染服务器端和客户端之间混合,但我不知道如何设置它。我已经想出了如何一个或另一个但不能在一起。

截至目前,这里是我所在的地方:

快速路线

app.get('/', site.index);
app.get('/product/:id', wiki.show);

再次使用pushState可以正常工作,但现在如何将两者结合起来?

1 个答案:

答案 0 :(得分:1)

要创建混合客户端/服务器应用程序,您希望客户端和服务器都能够呈现每个视图。当用户访问您的站点时,服务器将呈现视图并将html发送给用户。此时,客户端应用程序加载,任何相关链接应被拦截并替换为主干导航。

$(document).on('click', 'a:not([data-bypass])', function(e){
  href = $(this).prop('href')
  root = location.protocol+'//'+location.host+'/'
  if (root===href.slice(0,root.length)){
    e.preventDefault();
    Backbone.history.navigate(href.slice(root.length), true);
  }
});

这一行代码,一旦骨干应用程序启动,将捕获所有锚标签,而不会在客户端应用程序中使用数据旁路属性和消防路由功能,而不是将该页面的请求发送到服务器。添加数据旁路属性以创建不会触发路由功能的链接。