我有一个使用路由器设置的backbone.js单页应用程序(嗯,实际上是带有Backbone.Marionette AppRouter的Backbone.Marionette应用程序,但仍然如此)。但是,后端基于Django,我没有URL指向已经在backbone.js路由中的所有URL的视图。
基于Django URL conf中的现有URL,Backbone.js将为骨干路由提供服务,无论Django conf中列出了什么 - 似乎有什么东西,任何东西都需要在那里。
我是否需要拥有正确的Django视图才能为旧浏览器/ SEO提供后备?
协调Django URL conf和Backbone.js路由器的最佳做法是什么?
答案 0 :(得分:2)
我发现了一篇能够很好地解决这个问题的帖子:
http://duganchen.ca/single-page-web-app-architecture-done-right/
简而言之,我提出的包含后备的原因是非JavaScript浏览器和搜索引擎优化的原因。在这篇文章发表时,非JavaScript浏览器占用户的约1.4%(不到我读过的所有内容的2%),这使得SEO成为主要考虑因素。再次,搜索引擎优化可能与阅读这篇文章的每个人都无关,在这种情况下,可以跳过这个。
我发现使用phantom.js的Thomas Davis教程非常有帮助。 http://backbonetutorials.com/seo-for-single-page-apps/
然而,我需要考虑的另一个问题是历史API,除了最新的IE浏览器之外,它已被忽略。鉴于我的客户的用户,其中约15%使用IE< = 9,这也是一个问题。
最后,我还需要使用history.js。总而言之,更新一个非常简单的网站需要做很多工作。但是,我从这场考验中学到了很多东西。
答案 1 :(得分:1)
在我看来,如果您的骨干应用程序真的是一个页面,那么您不需要任何django视图。您可以将index.html作为静态文件提供(在生产中,甚至不是django),然后让骨干网的路由器处理你的url配置,就像你已经做的那样。您可以使用主干的历史记录并导航到虚假网址,添加网址参数等,以获取应用中的资源。