Создать HTML-страницу с помощью PHP или Javascript?Сторона сервера против стороны клиента - PullRequest
0 голосов
/ 22 ноября 2018

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

Я понимаю, что с точки зрения нагрузки это выбор между нагрузкой на стороне сервера и на стороне клиента, и сейчас это не проблема.Пожалуйста, исправьте меня, если я ошибаюсь, и дайте мне знать, что вы думаете об этом, если у вас есть какие-либо.

У меня также есть код JS для работы со страницей HTML, построенной на PHP, и я могу распознать два типастраниц, одна из них немного смущает меня:

Пассивная веб-страница

Может отображать только данные и не отправляет отзыв на сервер.Эти веб-страницы могут быть сделаны с помощью PHP или Javascript, я не вижу никакой разницы.

Активная веб-страница

Этот тип предназначен для страниц, которые отправляют и получают (AJAX и другие) запросы от сервера.Теперь у меня есть два варианта, которые я не могу выбрать:

Создайте объект PHP и передайте его JS для построения HTML.

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

Полная сборка HTML с использованием PHP

Этот параметр требует, чтобы JS знал о нескольких, а не обо всех частях объекта (частях, которые необходимо обновить).Это требует меньше работы над JS, так как откладывает возможную работу на будущее (т. Е. Каждую новую часть объекта, которая нуждается в обновлении, следует понимать как JS).


Теперь я уверен, что втораявариант лучше, но первый вариант на данный момент быстрее (так как я хотел бы скоро иметь работающий DEMO).В то же время я не совсем уверен и не хочу слишком углубляться, чтобы потом стало труднее изменить свое мнение.Что вы думаете?

Если это было недостаточно ясно, я объясню на примере.


PHP

Class A {
  protected $_name;
  protected $_id;

  function Update( $aInstance ) {
    // Give it an object, and it updates it. In case JS exchanges the whole object
  }
  function UpdateName( $newName ) {
    // Updates the name only. Used in case JS updates parts of the object.
  }
  // Other setters, too.
  function Draw() {
    // Either returns the object as JSON or echos the HTML code.
  }
}
class B inherits {
  protected $_age;
  function Update( $bInstance ) {
    paret::Update( $bInstance );
    // Update yourself, too.
  }
  // Other setters, too
  function Draw() {
    // Special draw, call parent's, or add to it
  }
}

JS 1-й вариант

var object;
function Draw( object ) {
  // Handle all parts of the object.
}
function UpdateName() {
  // Whatever happens when the name changes.
}

JS 2-й вариант

var header;
function DrawHeader() {
  // Display the header somehow
}
var DrawName() {
  // Display the name somehow
}
function UpdateName() {
  // Whatever happens when the name changes.
}

1 Ответ

0 голосов
/ 30 декабря 2018

Как я понимаю, вопрос заключается в обработке генерации HTML на стороне клиента (JS) и на стороне сервера (PHP).Почти во всех современных веб-приложениях часть HTML теперь обрабатывается на стороне клиента.HTML генерируется либо путем предоставления статических файлов HTML, либо с помощью основ пользовательского интерфейса на основе JS, таких как Angular / React, либо с помощью их комбинации.Идея использования серверного кода для генерации HTML сейчас довольно устарела, и для этого есть очень веские причины.Пожалуйста, ознакомьтесь с разделением проблем и архитектурой MVC (контроллер представления модели).Проще говоря, ниже приведены причины, по которым код на стороне сервера никогда не должен обрабатывать HTML в большинстве случаев:

1) Основная причина: отделять код пользовательского интерфейса от кода на стороне сервера.Если пользовательский интерфейс генерируется с использованием кода на стороне сервера, это не позволяет вам изменять инфраструктуру на стороне сервера в будущем.В этом примере, скажем, если нужно будет использовать Java или Go или Scala вместо PHP, то логику генерации HTML также нужно будет переместить или переписать.Однако, если ваш JS-код обрабатывает все данные через JSON, тогда PHP-код можно легко заменить другим языком, сохраняя формат JSON таким же, как и раньше.

2) Любое изменение в HTML-коде потребует перекомпиляцииперестроить и повторно развернуть код на стороне сервера, если код HTML генерируется с помощью кода на стороне сервера.Однако, если он хранится на стороне клиента, то перекомпиляция не требуется.

3) HTML и пользовательский интерфейс являются частью внешней разработки, а серверная - внутренней.Так что, если HTML-код написан на стороне сервера, то фронт-инженерам и бэкэнд-инженерам становится очень трудно сотрудничать и работать над одним файлом, нам определенно не нужна такая ситуация.

4) Существуют гораздо лучшие инструменты для разработки и обработки HTML, которые выполняются на стороне клиента, а не на стороне сервера.

5) Если генерация HTML происходит на стороне сервера,один и тот же код для генерации HTML выполняется снова и снова для каждого запроса.Это пустая трата ресурсов.Вместо этого, если генерация HTML происходит на стороне клиента, браузер (код JS) должен будет выполнить генерацию HTML, что значительно снижает нагрузку на серверную сторону.

Существует множество других хорошо объясненных причин, кромекак мне удалось.Короче говоря, генерация HTML на стороне PHP не очень хорошая идея.Надеюсь, это поможет!

...