PHP против JavaScript для динамических HTML-страниц - PullRequest
21 голосов
/ 24 мая 2011

Обычно, когда я собирал динамически сгенерированную HTML-разметку, я использовал PHP для хранения информации, а затем просматривал ее для создания элементов на странице. Одним из примеров является навигация; создайте массив объектов, а затем переберите их, чтобы повторить разметку. Это очень помогает в тех случаях, когда мне, возможно, придется вносить незначительные (или существенные) изменения во время разработки или сопровождения.

В последнее время мне стало интересно, стоит ли мне использовать JavaScript для этого. Тот же принцип, но с использованием addElement.

Просто хотел получить некоторые мнения по этому поводу; плюсы, минусы, php против js, seo соображения и т. д.

Спасибо, ребята!

Ответы [ 6 ]

40 голосов
/ 24 мая 2011

Делать это на стороне клиента означает:

  1. Делать это во множестве разных сред вместо одной
  2. Перерыв, когда пользователь приходит без JS (по любой причине)
  3. Если он не работает для подавляющего большинства ботов (включая поисковые системы)
  4. Инвестирование времени разработки в преобразование всей вашей логики
  5. Требование от браузера делать дополнительные запросы к серверу, что замедляет время загрузки

При принятии решения, следует ли вам делать что-то на стороне клиента, а не на стороне сервера, как правило, задайте себе два вопроса:

  1. Получит ли пользователь мгновенную обратную связь в ответ на его действия? например Сообщение об ошибке для неправильных данных в форме, которую они пытаются отправить. Если это так, то это будет выгодно на стороне клиента.
  2. Можно ли это сделать на стороне сервера? Если это так, сделайте это сначала на стороне сервера, так как это более надежно (а для не косметических вещей труднее мешать). Основывайтесь на том, что работает .
4 голосов
/ 24 мая 2011

Рекомендуется создавать любую необходимую разметку на стороне сервера.Это может быть вызвано следующими причинами:

SEO: Большинство роботов-сканеров не анализируют Javascript, поэтому они пропускают все, что вы генерируете с помощью addElement.

Доступность: Ваш сайт должен работать без Javascript.Рассмотрите людей, которые могут просматривать ваш сайт на Kindles, старых Blackberry, Nokias или других мобильных телефонах с данными.Им не нужны все причудливые стили и эффекты, но они должны, по крайней мере, обойти ваш сайт.

Согласованность: JS может добавить еще один уровень кросс-браузерной изменчивости,Зачем полагаться на рендеринг на стороне клиента необходимой разметки?Сделайте это на стороне сервера.

Конечно, этот совет может быть принят с ходу, если вы разрабатываете настольное приложение для всех JS или используете что-то вроде Sencha Touch framework.

4 голосов
/ 24 мая 2011

Это не тот или другой тип ситуации;как правило, вам нужно будет сделать оба.

Выполнение этого на стороне клиента, вероятно, будет медленнее, поскольку серверу все еще нужно выяснить все данные, но клиент должен их отобразить;это будет связано с несколькими запросами (скорее всего), и манипулирование DOM будет медленным (особенно в старых браузерах).

1 голос
/ 24 мая 2011

Если вас интересует SEO, все просто: JS не индексируется.

Есть также проблемы с пользовательским интерфейсом: если JS не включен, никакие JS-зависимые вещи не будут загружаться.

0 голосов
/ 24 октября 2014

PHP хорош для некоторых вещей, включая шаблонирование типов Handlebars и быструю замену содержимого на стороне сервера.Но это также не очень хорошо для некоторых вещей, таких как одностраничные приложения и игры, обновления сайтов в режиме реального времени.В этих вещах сильный JavaScript.

0 голосов
/ 24 мая 2011

Одна из возможностей - определить, какой пользователь просматривает ваш сайт:

  • Если это бот: анализ на стороне сервера, вы можете просто вывести то, что нужно боту, без графических вещей ...

  • Если это мобильный телефон: покажите мобильную оптимизированную версию, используя что-то вроде Sencha Touch, как указал Чарли

  • Если это стандартный браузер без javascript: отобразить страницу на стороне сервера

  • Если это стандартный браузер, с включенным javascript: просто отправьте данные со стороны сервера (или загрузите их с помощью Ajax) и визуализируйте данные со стороны клиента

Вы можете использовать что-то вроде Усы , который является механизмом шаблонов, работающим на многих серверных языках (PHP, Ruby, Java, ..., но также и на Javascript, что позволяет отображать страницы на стороне клиента!

И попробуйте использовать Javascript-фреймворк, такой как jQuery , Mootools , Dojo или ExtJS , они помогут вам написать код это будет работать в любом браузере.

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