Обычно, когда я собираю динамически генерируемую разметку HTML, я использую PHP для хранения информации, а затем перебираю ее, чтобы создавать элементы на странице. Одним из примеров является навигация; создайте массив объектов, а затем пропустите их, чтобы эхо разметки. Это помогает во многих случаях, когда мне может потребоваться внести незначительные (или значительные) изменения во время разработки или обслуживания.
В последнее время мне стало интересно, следует ли мне использовать JavaScript для этого. Тот же принцип, но с использованием addElement.
Просто хотел получить некоторые мнения по этому поводу; профи, минусы, php против js, соображения seo и т. д.
Спасибо, ребята!
Выполнение этой клиентской стороны означает:
При принятии решения о том, следует ли вам что-то делать на стороне клиента, а не на стороне сервера, как правило, задайте себе два вопроса:
Это не одна или другая ситуация; обычно вам нужно будет сделать то и другое.
Выполнение этой клиентской стороны, вероятно, будет медленнее, так как сервер все еще должен выяснить все данные, но клиенту нужно его отобразить; это будет связано с несколькими запросами (скорее всего), а 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 сильный.