Что должно генерировать HTML: JavaScript или php?
Быстрый вопрос, ища некоторые рекомендации. У меня есть сайт, который будет запрашивать данные из базы данных и отображать обратно пользователю в таблице. Я использую jQuery (AJAX), php и MySQL.
Где лучше всего создавать HTML-таблицу для отображения данных: если php сгенерирует ее и отправит все это (данные HTML +) обратно с сервера или же php просто вернет данные, и код jQuery создает таблицу и вставляет данные?
Хотя это работает в интрасети, я бы предпочел бы самый быстрый подход.
UPDATE:
Я хотел добавить небольшую дополнительную информацию к этой теме, если она может быть полезной для других. Я полностью согласился с идеей разделения, представленной здесь, и пошел с этим как мой подход к дизайну. Я использовал PHP для извлечения и упорядочивания необходимых данных в JSON, а затем использовал jQuery для генерации HTML для отображения возвращенной информации. В этом случае я создавал таблицу таблиц стиля таблицы с использованием jQuery и заполнял "ячейки", которые имели значения, возвращаемые с PHP. С несколькими строками и столбцами все шло отлично, но, как я могу сказать, таблица 16 x 16, динамически создавая входные элементы с помощью jQuery...
В этот момент я снова столкнулся с уродливым призраком, который является IE6.
IE6 по-прежнему является одобренным браузером, где я работаю, поэтому мое приложение должно работать на нем. Когда я тестирую свой дизайн на Firefox и Opera, интерфейс загружается быстро и с удовольствием используется. Когда я запускаю тот же код в IE6, для создания интерфейса требуется слишком много времени; достаточно, чтобы мои пользователи снова начали нажимать на вещи, думая, что приложение не отвечает. Я могу только проследить это до механизма JavaScript, который находится в IE6, поскольку код работает отлично в новых браузерах. Поэтому из-за этого я вернусь к редизайну для части интерфейса, чтобы PHP генерировал, по крайней мере, внутренние элементы формы таблицы, заполнял данными, а затем отправлял их обратно клиенту. Это ломает приятное разделение, которое я хотел, но я не вижу другого способа ускорить работу на стороне клиента в IE6.
В любом случае, просто подумал, что другие могут быть заинтересованы в результатах здесь, а для других начинающих, таких как я, насколько требования к поддержке браузера могут повлиять на выбор дизайна.
Ответы
Ответ 1
Хорошей стратегией является использование "разделения проблем" , например, использование клиентской стороны, чтобы все было в стороне от аспектов графического интерфейса.
Также обратите внимание, что эта стратегия хорошо сочетается с текущими тенденциями в Интернете, например. Google Web Toolkit (GWT).
Ответ 2
В пропускной способности интрасети не является узким местом, может быть старый неуклюжий движок IE JS, поэтому я бы сказал, что отправить сгенерированный HTML (даже в лучших браузерах собственный анализ фрагментов HTML должен быть быстрее, чем создание DOM с JS).
Ответ 3
Большинство скажут, что AJAX должен быть чистым, а не html-разметкой. Я не согласен с этим, я считаю, что AJAX хорошо загружает карманы HTML в места на экране. Я думаю, с точки зрения кодирования, его легче сгенерировать HTML с использованием технологии серверной стороны, а затем позволить javascript просто перевернуть его на страницу, где он должен идти. Он будет работать хорошо, он будет эффективным (innerHTML - самый эффективный способ размещения нового html на странице), а обслуживание кода будет проще. Если вы дадите javascript генерировать html, вам придется беспокоиться о 2-х местах, если что-то меняется с дисплеем, а не только на PHP.
Ответ 4
Самый быстрый с точки зрения пропускной способности сети имеет выход PHP JSON и использует jQuery для создания разметки.
Самый быстрый с точки зрения обработки на стороне клиента (и, возможно, реализация) использует PHP для генерации разметки - например, с использованием шаблонов - и передает ее через Ajax.
Ответ 5
Если вы можете получить данные и сгенерировать таблицу перед возвратом страницы пользователю, сделайте все это на PHP. Нет необходимости добавлять вспышку AJAX, если вы ничего не получаете от нее.
Если пользователь собирается фильтровать/запрашивать несколько обновлений данных с сервера... Я бы вернул данные через PHP в формате JSON в Javascript, и пусть Javascript отобразит HTML на странице.
Ответ 6
Если вы идете на самый быстрый подход: визуализируйте HTML-серверы с PHP. Если вам нужен более удобный, чистый подход к коду: попросите PHP отправить JSON в код AJAX. Таким образом, вы можете поддерживать хорошее разделение данных от представления и поведения. Будет легче изменить, как ваш сайт выглядит и работает, если вы можете управлять рендерингом HTML-кода из одного и того же места - на клиенте.
Ответ 7
Одна вещь, которую я не видел в других ответах:
консистенция:
Когда вы видите страницу, отображаемую, он ожидает, что сможет сохранить эту страницу как статический html -
(хотя taht сейчас меньше в этих "веб-2.0 днях" ), но все же, при прочих равных условиях,
пользователь должен иметь возможность сохранять то, что он видит как статическую страницу: поэтому вы должны отправить его предварительно визуализированный в html с сервера.
Ответ 8
Я бы создал HTML на стороне сервера и использовал JavaScript, чтобы немного улучшить HTML-код. Вы не можете создать HTML-страницу, которая действительна для всего браузера, а обнаружение ее со стороны сервера не является на 100% уверенным; вы не можете доверять идентификатору агента пользователя, так как многие браузеры позволяют пользователю выбрать другой, и единственный способ создать HTML-код для семейства браузеров - проверить, реализовано ли используемое свойство.
То, что я сообщаю, действительно в целом; в конкретном случае он не может быть действительным.