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

В чем разница между клиентским и серверным программированием?

У меня есть этот код:

<script type="text/javascript">
    var foo = 'bar';
    <?php
        file_put_contents('foo.txt', ' + foo + ');
    ?>

    var baz = <?php echo 42; ?>;
    alert(baz);
</script>

Почему это не пишет "bar" в мой текстовый файл, а выдает предупреждение "42"?


NB: более ранние версии этого вопроса были явно о PHP на сервере и JavaScript на клиенте. Основная сущность проблемы и решения одинаковы для любой пары языков, когда один работает на клиенте, а другой на сервере (даже если это один и тот же язык). Пожалуйста, примите это во внимание, когда увидите ответы, говорящие о конкретных языках.

4b9b3361

Ответ 1

Ваш код разбит на две полностью отдельные части, на стороне сервера и на стороне клиента.

                    |
               ---------->
              HTTP request
                    |
+--------------+    |    +--------------+
|              |    |    |              |
|    browser   |    |    |  web  server |
| (JavaScript) |    |    |  (PHP etc.)  |
|              |    |    |              |
+--------------+    |    +--------------+
                    |
  client side       |      server side
                    |
               <----------
          HTML, CSS, JavaScript
                    |

Обе стороны общаются через HTTP-запросы и ответы. PHP выполняется на сервере и выводит код HTML и, возможно, JavaScript, который отправляется как ответ клиенту, где интерпретируется HTML, и выполняется JavaScript. Как только PHP завершит вывод ответа, конец script завершается, и на сервере ничего не произойдет, пока не появится новый HTTP-запрос.

Пример кода выполняется следующим образом:

<script type="text/javascript">
    var foo = 'bar';
    <?php
        file_put_contents('foo.txt', ' + foo + ');
    ?>

    var baz = <?php echo 42; ?>;
    alert(baz);
</script>

Шаг 1, PHP выполняет весь код между тегами <?php ?>. В результате получится следующее:

<script type="text/javascript">
    var foo = 'bar';

    var baz = 42;
    alert(baz);
</script>

Вызов file_put_contents не привел ни к чему, он просто написал "+ foo +" в файл. Вызов <?php echo 42; ?> привел к выводу "42", который теперь находится в месте, где этот код был.

Этот полученный код HTML/JavaScript теперь отправляется клиенту, где он получает оценку. Вызов alert работает, а переменная foo не используется нигде.

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

Чтобы вызвать некоторый код PHP, клиент должен будет отправить новый HTTP-запрос на сервер. Это может произойти с использованием одного из трех возможных способов:

  • Ссылка, которая заставляет браузер загружать новую страницу.
  • Подача формы, которая передает данные на сервер и загружает новую страницу.
  • AJAX, который является техникой Javascript, чтобы сделать обычный HTTP-запрос на сервер (например, 1. и 2.), но не выходя из текущей страницы.

Вот вопрос, подробно описывающий этот метод

Вы также можете использовать JavaScript, чтобы браузер открывал новую страницу с помощью window.location или отправлял форму, эмулируя возможности 1. и 2.

Ответ 2

Чтобы определить, почему PHP-код не работает в JavaScript-коде, нам нужно понять, что такое клиентская и серверная языки и как они работают.

Языки на стороне сервера (PHP и т.д.): Они извлекают записи из баз данных, поддерживают состояние через HTTP-соединение без сохранения состояния и делают много вещей, которые требуют безопасности. Они находятся на сервере, эти программы никогда не открывают пользователю свой исходный код.

Image from wikipedia_http://en.wikipedia.org/wiki/File:Scheme_dynamic_page_en.svgimage attr

Таким образом, вы можете легко увидеть, что серверные языки обрабатывают HTTP-запросы и обрабатывают их, и, как сказал @deceze, PHP выполняется на сервере и выводит некоторый HTML, и, возможно, код JavaScript, который отправляется в качестве ответа клиенту, где HTML интерпретируется и JavaScript выполняется.

С другой стороны, клиентские языки (например, JavaScript) находятся в браузере и запускаются в браузере. Сценарии на стороне клиента обычно относятся к классу компьютерных программ в сети, которые выполняются на стороне клиента пользовательским веб-браузером, а не на стороне сервера.

JavaScript видим для пользователя и может быть легко изменен, поэтому для обеспечения безопасности мы не должны полагаться на JavaScript.

Поэтому, когда вы делаете HTTP-запрос на сервере, сервер сначала внимательно читает файл PHP, чтобы увидеть, есть ли какие-либо задачи, которые необходимо выполнить, и отправляет ответ клиентской стороне. Опять же, как сказал @deceze: * Как только PHP закончит вывод ответа, скрипт завершится, и на сервере ничего не произойдет, пока не поступит новый HTTP-запрос. *

Graphical representation

Источник изображения

Итак, что я могу сделать, если мне нужно вызвать PHP? Это зависит от того, как вам нужно это сделать: перезагрузив страницу или используя вызов AJAX.

  1. Вы можете сделать это, перезагрузив страницу и отправив запрос HTTP
  2. Вы можете сделать AJAX-вызов с JavaScript - это не требует перезагрузки страницы

Хорошо для чтения:

  1. Википедия: Серверные скрипты
  2. Википедия: скрипты на стороне клиента
  3. Мадара Учиха: Разница между программированием на стороне клиента и на стороне сервера

Ответ 3

Ваш Javascript будет выполняться на клиенте, а не на сервере. Это означает, что foo не оценивается на стороне сервера, и поэтому его значение не может быть записано в файл на сервере.

Лучший способ подумать об этом процессе - как будто вы генерируете текстовый файл динамически. Текст, который вы генерируете, становится исполняемым кодом после того, как браузер интерпретирует его. Только то, что вы размещаете между тегами <?php, оценивается на сервере.

Кстати, создание привычки встраивать случайные фрагменты PHP-логики в HTML или Javascript может привести к серьезному запутанному коду. Я говорю от болезненного опыта.

Ответ 4

В веб-приложении каждая задача выполняется способом запроса и ответа.

Программирование на стороне клиента с html-кодом с Java script и его фреймворками, библиотеками выполняется в Internet Explorer, Mozilla, Chrome-браузерах. В сценарии java серверные сервлеты программирования выполняются в Tomcat, веб-логике, j боссе, WebSphere severs

Ответ 5

Я попытаюсь объяснить это простым способом.

Сторона клиента - это то, что пользователь видит/код, который отображается в браузере.

Программирование на стороне клиента включает HTML (HTML, HTML5, DHTML), CSS (CSS, CSS3) и JavaScript (JavaScript, ES5, ES6, ES7, TypeScript, JQuery, ReactJs, AngularJs, BackboneJs или любые другие интерфейсы JavaScript Front-end).

На стороне клиента основное внимание уделяется "как страница будет выглядеть" и ее поведение по сравнению с браузерами.

  1. HTML - это то, что мы видим.
  2. CSS решает его проектирование (цвета, плавающие изображения, прокладка и т.д.).
  3. Информация о странице монитора JavaScript. Все вызовы API и ведение данных по DOM выполняется с помощью JavaScript.

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

Программирование на стороне сервера включает в себя язык программирования (Java, PHP,.Net, С#, C, C++, NodeJS и т.д.), Базы данных (SQL, Oracle, MySql, PostgreySql, No-Sql, MongoDB и т.д.), Сторонний API (Rest, Мыло), Бизнес-логика.

Программирование на стороне сервера фокусируется на "как сделать доступными данные для клиентской стороны".

  1. Серверный язык отвечает за обмен данными между различными источниками данных, такими как база данных, сторонний API, файловая система, блок-цепочка и т.д. Эти языки поддерживают определенный API для взаимодействия с клиентской стороной.
  2. База данных несет ответственность за хранение информации.
  3. Business Logic определяет "как использовать данные и что делать с данными".

Данные запроса на стороне клиента или запрос на хранение данных с серверной стороны через API, предоставляемый сервером. Этот запрос и ответ данных выполняются с помощью протокола HTTP/FTP, такого как REST API, SOAP API.

Ответ 6

Серверная часть <?php echo "Hello world";?> <?php echo "Hello world";?>

Клиентская часть <html> <head></head> <body> <pre>Hello world</pre> </body> </html>

Ответ 7

Клиентская сторона script запускается в вашем браузере раньше и вы отправляете запрос на серверные и серверные скрипты, запущенные на сервере. JavaScript, CoffeeScript - это клиентская сторона script, а PHP, Perl и т.д. Являются серверными.