策略问题:RESTful应用程序中的平面/静态页面

时间:2011-10-06 22:41:31

标签: javascript django web-applications

我正在使用Backbone.js通过tastypie连接到Django后端。我已经弄清楚了我的动态内容,但我想知道如何处理我的常见问题/关于/联系页面。因为我希望有一个不间断的用户体验,没有等待链接之间加载页面,我想知道从哪里加载这些平面页面的数据。

我不想在这里使用overarchitect,因为这些是非动态内容的宣传册页面。简而言之,布局很重要,它们不需要CMS。

那么我的主要index.html中是否已有页面,只需在需要时显示它们?这对我来说似乎很脏。

我是否让Django在设置为接受html的Textarea中存储这些页面的html,并在需要时通过tastypie将html吐出为JSON?呃,这听起来也很脏。

或者混合,其中django只吐出相关数据来填充已在我的index.html中定义的html - 这听起来是正确的,但是就像工作太多,我不想定义db模型正如我所说,不需要CMS的页面。

我希望通过所有这些方法摆脱困境,你有更好的办法解决我的困境。

1 个答案:

答案 0 :(得分:0)

您首先想到将它们包含在主index.html并根据需要显示它们似乎很合理,但有一些缺点:

  • 您的索引页面较重,因此加载速度比需要的速度慢
  • 您的宣传册页面在代码库中没有逻辑分隔

您可以通过在index.html加载后动态加载HTML来解决这两个问题。当用户点击它们时,您仍然使用相同的客户端代码来显示页面,就像它嵌入在主HTML文件中一样,而不是将HTML包含在最初的index.html文件中......

<div id="faq-page">
   <h1>FAQ</h1>
   ...
</div>

有空白div和一个事件,在主页面渲染后通过AJAX加载它们。我不确定你是否使用jquery,但如果是这样,代码看起来像这样

<div id="faq-page"></div>
<script>
    $(function() {
        $("#faq-page").hide() // ensure it doesn't display too early
                      .load("/include/faq.html");  // async load the content from server
    });
</script>

现在,当用户点击您应用中的常见问题解答链接时,该页面将尽快显示。如果页面有时间加载(通常),它将立即显示。如果它们在加载之前碰巧碰到了链接,它会在服务器响应后立即显示。

您可以在服务器端设置/include/faq.html