PHP и JavaScript для динамических HTML-страниц

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

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

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

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

Выполнение этой клиентской стороны означает:

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

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

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

Это не одна или другая ситуация; обычно вам нужно будет сделать то и другое.

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

Лучшей практикой было бы создание любой необходимой разметки на стороне сервера. Причины этого включают:

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

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

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

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

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

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

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

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

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

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

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

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

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

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