Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

  • Выполнение этого во многих разных средах вместо одного
  • При этом он прерывается всякий раз, когда пользователь приходит без JS (по какой-либо причине)
  • Невозможно работать для подавляющего большинства ботов (включая поисковые системы).
  • Инвестирование времени разработки в преобразование всей вашей логики
  • Требуется, чтобы браузер выполнял дополнительные запросы на сервер, замедляя время загрузки

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

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

Ответ 2

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

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

Ответ 3

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

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

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

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

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

Ответ 4

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

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

Ответ 5

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

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

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

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

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

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

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

Ответ 6

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