2011-10-06 111 views
0

我正在使用Backbone.js通過tastypie連接到Django後端。我已經知道我的動態內容,但我想知道如何處理我的FAQ/About/Contact頁面。因爲我想要有一個不間斷的用戶體驗,不需要等待頁面在鏈接之間加載,我想知道從哪裏加載這些平面頁面的數據。策略問題:RESTful應用中的平面/靜態頁面

我不想在這裏建築,因爲這些是非動態內容的宣傳冊頁面。總之,佈局很重要,而且他們不需要CMS。

所以我有我的主要index.html中的頁面,只是在需要時顯示它們?這對我來說似乎很骯髒。

我是否有Django將這些頁面的html存儲在Textarea中,以便接受HTML,並在需要時通過tastypie將html吐出爲JSON?呃,這聽起來也很髒。

還是一個混合,其中django只吐出相關的數據來填寫已在我的index.html中定義的html - 這聽起來是正確的,但像工作太多的工作,我不想定義db模型對於我所說的頁面,不需要CMS。

我希望我能夠用所有這些方法擺脫困境,而且你有更好的方法來解決我的困境。

回答

0

它們包括在主index.html,然後顯示在需要他們的您的第一個想法似乎比較合理的,但也有一些缺點:

  • 你的索引頁較重,因此加載較慢比它需要是
  • 你的宣傳冊頁是沒有邏輯的代碼庫分離,由具有HTML對於他們中的index.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