Django URL conf和Backbone.js路由器



我有一个backbone.js单页应用程序,它都是用路由器设置的(嗯,实际上是一个带有backbone.Marionette AppRouter的backbone.马里内特应用程序,但无论如何)。然而,后端是基于Django的,在那里我没有指向backbone.js路由中所有URL的视图的URL conf。

基于Django URL conf中现有的URL,无论Django conf中列出了什么,Backbone.js都将为骨干路由提供服务——这似乎是什么,任何东西都需要存在。

我需要有合适的Django视图才能为旧浏览器/SEO提供后备方案吗?

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

我发现一篇文章很好地解决了这个问题:

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。总而言之,更新一个原本非常简单的网站需要做很多工作。然而,我从这次磨难中学到了很多。

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

最新更新