¿Dónde está la línea entre el back end y el front end?

El front-end es el agente de usuario, que para la mayoría de los propósitos significa el navegador, que representa HTML. El back-end es el servidor, que sirve dicho HTML. La línea entre los dos es la solicitud.

El navegador solicita algo del servidor y el servidor envía una respuesta. Esta llamada y respuesta es el baile que corre Internet. La respuesta podría ser un archivo (un documento HTML, una imagen, un archivo JavaScript o un archivo CSS) o algunos datos. Esa última parte es importante. Llegaremos a eso en un momento.

Lo importante a tener en cuenta aquí es que no sucede nada entre el navegador y el servidor. Todo lo que sucede sucede en el servidor, el back-end, o en el navegador, el front-end o el lado del cliente.

Si está enviando un archivo, como un archivo CSS, un PNG o un documento HTML plano, entonces todo lo que sucede es la solicitud de entrada, la respuesta de salida. Donde se pone interesante es cuando la respuesta es dinámica. Su programación de back-end, ya sea PHP, .Net, Java, Python, Ruby, Huey, Louie o Dewey, ensambla su documento y lo dispara a través del tubo hacia el navegador. El servidor no tiene conexión con la respuesta después de enviarla. Cualquier interacción ahora ocurre en el navegador hasta que ese navegador envíe una nueva solicitud. Tradicionalmente, eso significaba cargar una nueva página o actualizar.

La línea se vuelve borrosa en la mente de las personas debido a las solicitudes iniciadas por JavaScript al servidor. Eso es AJAX. Realmente no es misterioso: JavaScript, que se ejecuta en el navegador, envía una solicitud al servidor para obtener algunos datos. Por ejemplo, elige un método de envío y los scripts que se ejecutan en la solicitud de su navegador, a través de URL, un costo de envío de scripts en su servidor. La respuesta luego se cuece, en su navegador, en la página que está viendo manipulando el HTML. La única diferencia aquí es que esto está sucediendo sin que nada cambie en la barra de direcciones de su navegador. No hay recarga, pero todavía hay una solicitud y respuesta HTTP o HTTPS. El baile se ha movido pero no ha cambiado.

Conmigo hasta ahora? El patrón es siempre el mismo. El agente de usuario hace una solicitud. Algo sucede en el servidor. Se envía la solicitud, igual que se envía una carta por correo. El agente de usuario y el servidor no están conectados, por lo que no importa cuántos marcos como Angular o IDE como .Net parezcan desenfocar la línea, la línea siempre está ahí. Los buenos desarrolladores siempre deben ser conscientes de la diferencia entre lo que sucede en el servidor y lo que sucede en el agente de usuario.

Me parece que su amigo está confundiendo PHP con el “front end” porque hay HTML en los scripts PHP. Por supuesto que lo habría. El trabajo de PHP es ensamblar el marcado (HTML) y el contenido que se envía al navegador. PHP no se ejecuta en el navegador. Es la maquinaria que crea lo que se envía.

El back-end es tu servidor. El front-end es el navegador de su usuario. Tienes razón.

Él simplemente está equivocado.

Para simplificar demasiado, solo un poco: la línea es muy clara: si se ejecuta en el cliente (en el navegador, como una aplicación móvil), es front-end. Si se ejecuta en el servidor, es backend. PHP se ejecuta en el servidor; ipso facto es back end. (Es un poco más complicado si ejecuta el cliente y el servidor en la misma máquina. Aun así, si está ejecutando un servidor local, en su computadora portátil, sigue siendo el back-end).

Además, PHP no procesa HTML, genera HTML y lo inserta en una página antes de enviarlo al navegador. El navegador hace el renderizado.

JavaScript, por el contrario, puede ser front-end o back-end, dependiendo de cómo se use y dónde se ejecute.

Me temo que está equivocado. “Front-end” se refiere a la aplicación del lado del cliente que asume la responsabilidad total de la representación sin involucrar al lado del servidor. También significa que la aplicación del lado del cliente asume gran parte de la lógica empresarial con la comunicación ocasional al servidor para los servicios de datos.

Que PHP represente la página HTML no la convierte en “front-end”. La distinción clave es si la aplicación del lado del cliente lo está haciendo o no.

php produce la salida HTML en el back-end, pero ese contenido contiene la interfaz, por lo que si desea algo elegante en la interfaz, tendría que generarlo en php. Sin embargo, todo el contenido es manejado por plantillas y probado independientemente del “proceso de producción”. Entonces tiene razón, pero las cosas deben considerarse como un sistema cuando se diseña el sistema, y ​​la forma en que eso se desarrolla podría confundir a algunas personas.

Además de eso, php se puede usar en la línea de comando, donde técnicamente es ambos, pero no lo encontrarás en un sitio web.