Это не хорошая практика, чтобы увидеть, является ли либо bool True
:
if (False,False):
print("it does not do what you think it does")
Вывод:
it does not do what you think it does
См. Python True проверка значения : любой непустой кортеж имеет значение True
-й
. Правильный путь:
if a or b:
pass
. Для кратных можно использовать . any()
:
if any(x for x in (False, True)):
pass # will enter here if any part of the tuple is True
else:
pass # will enter here if no part of the tuple is True
"Весь HTML в Urbantastic абсолютно статичен. Все динамические данные отправлены через Ajax в формате JSON и затем объединены с HTML с помощью JavaScript".
Я думаю, что это - стандартная модель RIA. Слово акцента, кажется, 'Все' здесь. Причина во многих веб-сайтах, много динамического контента все еще не получено через Ajax, только основные характеристики.
Я не думаю, что проблемами рендеринга было бы главное узкое место, если у Вас нет огромной веб-страницы с большим количеством элементов.
Доступность JS является действительно проблемой. Но затем, у пользователей, которые хотят испытать Ajax, должен быть включенный JS. Вы сделали обзор того, сколько из ВАШИХ пользователей не включили его?
Преимущество, можно служить 99% (в развес) содержания через CDN (как Akamai) или даже поместить его на внешнее устройство хранения данных (например, S3). При обслуживании только JSON для сайта почти невозможно получить slashdoted.
Когда Ajax начал поражать его большой, в конце 2005 я записал клиентский движок шаблонов и в основном превратил мой шаблон блоггера в полностью оперенный опыт Ajax.
Вещь, тот шаблонный материал, было действительно легко реализовать, и это устранило много трудной работы.
Вот то, как это, был сделан.
<div id="blogger-post-template">
<h1><span id="blogger-post-header"/></h1>
<p><span id="blogger-post-body"/><p>
<div>
И затем в JavaScript:
var response = // <- AJAX response
var container = document.getElementById("blogger-post-template");
if (!template) { // template context
template = container.cloneNode(true); // deep clone
}
// clear container
while(container.firstChild)
container.removeChild(template.firstChild);
container.appendChild(instantiate(template, response));
Инстанцировать функция делает глубокий клон шаблона, затем ищет клон идентификаторы для замены данными, найденными в ответе. Конечным результатом является заполненное дерево DOM, которое было первоначально определено в HTML. Если у меня был больше чем один результат, я просто циклично выполнился через вышеупомянутый код.