Smarty Vs. Javascript / AJAX

У меня есть сомнение: есть ли стандарт / соглашение, когда я должен использовать «Smarty templating» и когда следует использовать Javascript Ajax для создания контента? Я могу использовать вызовы Ajax / Javascript для динамического создания контента.

В моем приложении используются как Ajax, так и Smarty , но я хочу установить правило для разработчиков

Вы должны использовать только вызовы AJAX для загрузки динамических данных, которые неизвестны в момент загрузки страницы . Например, когда вы нажимаете ссылку «комментарии» для заданного вопроса / ответа на переполнение стека, для динамической загрузки данных выполняется вызов AJAX. Это результат нажатия пользователем ссылки на комментарии, а не на результат загрузки страницы. Вы не знаете, что вы должны показывать эти комментарии во время загрузки страницы, поэтому в этом случае необходимо сделать вызов AJAX.

Вы должны использовать шаблоны для отображения любых данных, которые известны в момент загрузки страницы . Это облегчает работу с людьми, у которых отключен Javascript (я знаю, не так много), и это обеспечивает четкое разделение логики с представлением. Еще одним важным преимуществом использования шаблонов является тот факт, что это может значительно уменьшить количество HTTP-запросов, сделанных в браузере клиента.

Это особенно важно в мире мобильных браузеров, где задержка, а не пропускная способность, является вашим самым большим препятствием. Например, в мобильном Safari один HTTP-запрос на страницу с шаблонами Smarty будет загружаться значительно быстрее, чем запрос на загрузку страницы с шаблоном Javascript с пятью или шестью дополнительными HTTP-запросами. Это особенно актуально при использовании EDGE, 3G и других мобильных услуг мобильной связи, отличных от Wi-Fi. На самом деле, это так важно, что это первое руководство в Best Practices для ускорения вашего сайта .

В идеале вы также должны грациозно деградировать функциональность, когда Javascript отключен . Хорошим примером является окно автозаполнения поиска. Это действительно здорово, что предлагаемые поисковые запросы волшебным образом появляются по мере ввода, но если вы отключите Javascript, у вас будет функциональный блок поиска. Это классический пример хорошего ухудшения качества обслуживания. Переполнение стека, как правило, отличная работа, обеспечивающая надежный опыт без Javascript. Одно замечание – это комментарии. Когда Javascript отключен, отображаются только самые популярные комментарии, а публикация новых комментариев отключена.

Если это абсолютно необходимо, вы должны думать о Javascript как о бонусной функции, которая не может быть включена, а не как о чем-то, что нужно использовать для создания критических фрагментов вашего сайта . Есть, очевидно, исключения (некоторые вещи просто невозможно сделать без Javascript). Вы заметите, например, что Stack Overflow очень полезен при выключенном Javascript. Вы не будете получать обновления в режиме реального времени, когда появятся новые ответы, или придумайте предварительные просмотры Markdown в режиме реального времени, но основные функции все еще существуют. Весь «тяжелый подъем» выполняется с помощью HTML и CSS. Javascript – это просто обледенение (правда, очень хорошее обледенение) на торте. Это своего рода примечание, но это достаточно важно, чтобы упомянуть.

Вероятно, это зависит от того, какую работу вы делаете в своих шаблонах. Лично я ненавижу делать много тяжелого стиля / макета только в Javascript. Если вы можете загрузить основную часть своего макета. Smarty и просто измените определенные биты данных (только данные , а не разметку / стиль, если это возможно), что может быть хорошим местом для стандартизации в вашей собственной команде разработчиков.

Используйте шаблоны для создания на стороне сервера и DHTML / AJAX для чего-либо после загрузки исходной страницы (не используя обновление). Даже тогда ответ сервера для самого вызова AJAX может быть собран с помощью шаблона, который может работать лучше всего для любого нетривиального контента.