Javascript 使用node.js express server计算主干.js pushState路由?
Javascript 使用node.js express server计算主干.js pushState路由?,javascript,node.js,backbone.js,express,pushstate,Javascript,Node.js,Backbone.js,Express,Pushstate,pushState支持是在主干网.js的0.5版更新中引入的 发件人: 请注意,使用真实URL需要您的web服务器能够 正确呈现这些页面,因此需要根据需要进行后端更改 好。例如,如果您的路径为/documents/100,则您的web 如果浏览器访问该URL,服务器必须能够为该页面提供服务 直接的。对于完整的搜索引擎爬行能力,最好有 服务器为页面生成完整的HTML。。。但如果它是一个网络 应用程序,只需呈现与应用程序相同的内容 根URL,并用主干视图和JavaScript填充其余部分 很好 这似
pushState
支持是在主干网.js的0.5版更新中引入的
发件人:
请注意,使用真实URL需要您的web服务器能够
正确呈现这些页面,因此需要根据需要进行后端更改
好。例如,如果您的路径为/documents/100,则您的web
如果浏览器访问该URL,服务器必须能够为该页面提供服务
直接的。对于完整的搜索引擎爬行能力,最好有
服务器为页面生成完整的HTML。。。但如果它是一个网络
应用程序,只需呈现与应用程序相同的内容
根URL,并用主干视图和JavaScript填充其余部分
很好
这似乎是一个微不足道的问题,但我想知道是否有人可以帮助我编写一些特定的(最好是)服务器代码。我应该如何处理这些路线?我有点困惑
以下是我的应用程序路由器模块的相关摘录:
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
domain.com
domain.com/about
domain.com/#/关于//解释
首先,您需要知道,domain.com/#/about
将调用服务器的“/”路由,因为它不读取#片段。服务器将呈现Backbone.js应用程序的基础,Backbone将触发“about”路由
因此,您需要在Express JS中声明两条路由:
- /
- /关于
代码
我建议您使用Derick Bailey提供的3个链接与Backbone.js进行SEO兼容性:
- HTML5 PushState的搜索引擎优化和可访问性,第1部分:介绍PushState:
- HTML5 PushState的搜索引擎优化和可访问性,第2部分:主干网的渐进增强。js:
- HTML5 PushState的搜索引擎优化和可访问性,第3部分:视频:
非常好的链接,正是我想要的,谢谢。我仍然对整个动态的一个方面感到困惑。因为我为/about
包含了一个服务器端路由,这难道不意味着我们正在失去散列和hashbang方法给我们带来的好处吗?事实上,我们不必从服务器获取整个响应。我不确定我是否100%正确地理解了这一点。例如,浏览器会将#/about
的上一个散列片段解释为对的请求http://domain.com
然后,一旦加载默认文档(例如example.com)的内容,浏览器就会处理哈希片段。例如,只有在新选项卡/窗口中使用哈希片段复制url之后,这种情况才会出现。我不能用英语很好地解释,所以我建议你阅读链接并尝试代码以更好地理解:)哈哈,没问题。谢谢你的澄清!谢谢你的链接,伙计!
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
});