6

我有一个用路由器设置的主干.js 单页应用程序(好吧,实际上是一个带有 Backbone.Marionette AppRouter 的 Backbone.Marionette 应用程序,但尽管如此)。但是,后端基于 Django,我没有 URL conf 指向已经在主干.js 路由中的所有 URL 的视图。

基于 Django URL conf 中的现有 URL,Backbone.js 将为骨干路由提供服务,而不管 Django conf 中列出的内容 - 似乎有些东西,任何东西都需要在那里。

我是否需要拥有适当的 Django 视图才能为旧版浏览器/SEO 提供后备方案?

协调 Django URL conf 和 Backbone.js 路由器的最佳实践是什么?

4

2 回答 2

2

我发现一个帖子很好地解决了这个问题:

http://duganchen.ca/single-page-web-app-architecture-done-right/

简而言之,我包含后备的理由是出于非 JavaScript 浏览器和 SEO 的原因。在撰写本文时,非 JavaScript 浏览器占用户的约 1.4%(在我所阅读的所有内容中不到 2%),这使得 SEO 成为主要考虑因素。同样,SEO 可能与阅读这篇文章的每个人都不相关,在这种情况下,可以跳过。

我发现 Thomas Davis 的使用phantom.js的教程很有帮助。http://backbonetutorials.com/seo-for-single-page-apps/

然而,我需要考虑的另一个问题是历史 API,除了最新的 IE 浏览器之外,所有的浏览器都忽略了它。考虑到我客户的用户,其中大约 15% 使用 IE <= 9,这也是一个问题。

最后,我还需要使用history.js。总而言之,更新一个原本非常简单的网站需要做很多工作。然而,我从这次磨难中学到了很多。

于 2012-12-28T01:39:52.377 回答
1

在我看来,如果您的主干应用程序确实是一个页面,那么您就不需要任何 django 视图。您可以将 index.html 作为静态文件提供(在生产中,甚至不是由 django 提供),然后让骨干网的路由器处理您的 url 配置,就像您已经在做的那样。您可以使用主干的历史记录并导航到虚假网址、添加网址参数等,以获取应用程序中的资源。

于 2012-12-27T15:32:55.060 回答