Smarty Vs. Javascript / AJAX - PullRequest
       16

Smarty Vs. Javascript / AJAX

6 голосов
/ 06 января 2009

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

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

Ответы [ 3 ]

19 голосов
/ 06 января 2009

Вы должны использовать только вызовы 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 - это просто глазурь (правда, очень хорошая глазурь) на торте. Это своего рода примечание, но это достаточно важно упомянуть.

0 голосов
/ 06 января 2009

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

0 голосов
/ 06 января 2009

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

...