如何将Backbone.js用于多页Web应用程序?

时间:2013-02-05 23:19:01

标签: javascript backbone.js single-page-application

我一直使用Backbone的路线(#!/ blah)

但我意识到,为了获得Google的索引,您需要提供该网站的非JavaScript版本。

我不喜欢两次写代码。所以,我宁愿构建一个多页面的应用程序,而不是单页面的Web应用程序。

Backbone.js为我提供了“结构”,所以我的javascript不会变成sphagetti混乱。但是,我完全不知道如何使用Backbone构建多页面应用程序。

您是否在每个页面渲染中都包含main.js文件?路线怎么样?你怎么处理那件事呢?你如何应对模块化等?

我希望有一个关于如何使用Backbone构建多页面javascript应用程序的教程。

2 个答案:

答案 0 :(得分:2)

做这样的事情需要考虑很多因素,但这里有两个关键点:

提供页面

您可能希望让您的Web服务器将所有内容路由到服务相同的静态页面(假设它是静态资产)。这意味着http://yourdomain.com/*中的所有内容都将投放/var/www/yourdomain.com/index.html。加载静态页面后,该页面上的JS将决定给定URL的操作。

推送状态

要进行路由,您仍然可以使用骨干路由,但不要使用hashbangs(#!/blah样式网址)。例如,请参阅http://backbonejs.org/#History。这将允许您导航到真实的URL,而无需实际需要页面刷新。如果浏览器不支持pushState,一切仍然有效,但它会重新加载页面。

答案 1 :(得分:0)

@Jamie Wong的回答让你走的路。通过使用pushState而不是基于散列的URL,Google应将每条路由视为不同的页面。但是,由于我假设每条路线的内容都是动态生成的,因此我不清楚Google是否会获取所有内容。谷歌绝对有能力访问动态内容,如上面提到的@Domenic,但问题是:

1)他们可以访问多少?

2)他们是否尝试尽可能多地访问所有网站,或者只访问Facebook等大型数据网站?

您可以尝试为每个视图提供默认数据,然后在基于用户行为的动态内容中进行分层。 Backbone称之为bootstrapping。 http://backbonejs.org/#FAQ-bootstrap