Стратегическая проблема: плоские / статические страницы в приложении RESTful - PullRequest
0 голосов
/ 07 октября 2011

Я использую Backbone.js для подключения к бэкэнду Django через tastypie.У меня есть кое-что для моего динамического контента, но мне интересно, что делать с моими FAQ / About / Contact pages.Поскольку я хочу иметь бесперебойное взаимодействие с пользователем, не дожидаясь загрузки страницы между ссылками, мне интересно, откуда загружать данные для этих плоских страниц.потому что это страницы брошюры с нединамическим содержанием.Короче говоря, макет важен, и им не нужна CMS.

Так есть ли у меня страницы уже в моем основном index.html, и я просто показываю их при необходимости?Мне это кажется грязным.

Нужно ли Django хранить html для этих страниц в Textarea, настроенном на прием html, и выкладывать html в виде JSON через tastypie, когда это необходимо?Тьфу, мне это тоже кажется грязным.

Или гибрид, где django только выплевывает соответствующие данные, чтобы заполнить HTML, который уже определен в моем index.html-- Это звучит правильно, но слишком многоработа, я не хочу определять модели БД для страниц, которые, как я уже сказал, не нуждаются в CMS.

Я надеюсь, что со всеми этими подходами я не в порядке, и выесть что-то гораздо лучшее, чтобы решить мою дилемму.

1 Ответ

0 голосов
/ 07 октября 2011

Ваша первая идея включить их в основной 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>

Теперь, когда пользователь нажимает ссылку FAQ в вашем приложении, страница будет отображаться так быстро, каквозможный.Если у страницы было время для загрузки (обычно), она будет отображаться мгновенно.Если им удастся перейти по ссылке до ее загрузки, она появится, как только сервер ответит.

Вы настроили /include/faq.html так, как хотели бы на стороне сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...