Вы должны использовать только вызовы AJAX для загрузки динамических данных, которые неизвестны на момент загрузки страницы . Например, когда вы нажимаете ссылку «комментарии» для заданного вопроса / ответа в переполнении стека, выполняется вызов AJAX для динамической загрузки данных. Это результат того, что пользователь щелкнул ссылку на комментарий, а не результат загрузки страницы. Вы не знаете, что должны показывать эти комментарии во время загрузки страницы, поэтому в этом случае целесообразно сделать вызов AJAX.
Вы должны использовать шаблоны для отображения любых данных, которые известны на момент загрузки страницы . Это облегчает общение с людьми, у которых отключен Javascript (я знаю, не так много), и обеспечивает четкое отделение логики от представления. Еще одним важным преимуществом использования шаблонов является тот факт, что он может значительно уменьшить количество HTTP-запросов, сделанных из браузера клиента.
Это особенно важно в мире мобильного просмотра, где задержка, а не пропускная способность, является вашим самым большим препятствием. Например, в мобильном Safari один HTTP-запрос к странице с шаблоном Smarty будет загружаться значительно быстрее, чем запрос на загрузку страницы с Javascript-шаблоном , которая выполняет пять или шесть дополнительных HTTP-запросов. Это особенно актуально при использовании EDGE, 3G и других услуг мобильной передачи данных без Wi-Fi. На самом деле, это так важно, что это первое руководство в рекомендациях Yahoo по ускорению работы вашего сайта .
В идеале, вы также должны изящно ухудшать функциональность, когда Javascript отключен . Хорошим примером является окно автозаполнения поиска. Очень здорово, что предложенные поисковые термины магически появляются при вводе текста, но если вы отключите Javascript, у вас все равно будет функциональное окно поиска. Это классический пример хорошего снижения качества обслуживания. Переполнение стека, как правило, делает отличную работу, обеспечивая прочную работу без Javascript. Одно из мест, где оно не хватает, - в комментариях. Когда Javascript отключен, отображаются только самые популярные комментарии, а публикация новых комментариев отключается.
Если в этом нет необходимости, вы должны думать о Javascript как о бонусной функции, которая может быть не включена, а не о том, что следует использовать для создания критических частей вашего сайта . Очевидно, есть исключения (некоторые вещи просто невозможно сделать без Javascript). Например, вы заметите, что переполнение стека очень удобно при отключенном Javascript. Вы не будете получать обновления в режиме реального времени, когда публикуются новые ответы, или модные предварительные просмотры Markdown в реальном времени, но основная функциональность все еще там. Вся «тяжелая работа» выполняется с помощью HTML и CSS. Javascript - это просто глазурь (правда, очень хорошая глазурь) на торте. Это своего рода примечание, но это достаточно важно упомянуть.