pushState
支持。
请注意,使用真实网址需要您的网络服务器能够 正确呈现这些页面,因此需要进行后端更改 好。例如,如果您的路线为/ documents / 100,则表示您的网站 如果浏览器访问该URL,则服务器必须能够提供该页面 直。对于完整的搜索引擎可抓取性,最好有 服务器生成页面的完整HTML ...但如果它是一个Web 应用程序,只是呈现您将拥有的相同内容 根URL,并使用Backbone Views和JavaScript填充其余部分 工作正常。
这可能看起来像一个微不足道的问题,但我想知道是否有人可以帮助我使用某些特定的(express)node.js服务器代码。我该如何处理这些路线?我有点困惑。
以下是我应用的路由器模块的相关摘录:
var Router = Backbone.Router.extend({
routes: {
'': 'index',
'about': 'about'
},
index: function() {
indexView.render();
},
about: function() {
aboutView.render();
}
});
var initialize = function() {
var router = new Router;
Backbone.history.start({ pushState: true });
}
return {
initialize: initialize
};
我这里只有一个顶级路线和一个关于页面的路线。那么我应该如何设置一个允许我导航到的节点服务器:
domain.com
domain.com/about
domain.com/#/about // <- for browsers that don't support pushState
答案 0 :(得分:18)
首先,您需要知道domain.com/#/about
将调用服务器的'/'路由,因为它不会读取#片段。您的服务器将呈现Backbone.js应用程序的基础,Backbone将触发“关于”路由。
因此,您需要在Express JS中声明两个路由:
app.get('/', function(req, res) {
// Trigger the routes 'domain.com' and 'domain.com/#/about'
// Here render the base of your application
});
app.get('/about', function (req, res) {
// Trigger the route 'domain.com/about'
// Here use templates to generate the right view and render
});
我建议你使用Derick Bailey的3个链接与Backbone.js进行SEO兼容: