Por mi experiencia en desarrollo web, sé que lenguajes como PHP, Java, Python ... etc se usan para cosas de desarrollo de back-end (software que se ejecuta en el servidor), y para lenguajes front-end, se usan JS / HTML / CSS.
Pero veo que muchas compañías dicen que usan, por ejemplo, PHP para el desarrollo front-end y python para el back-end.
¿Eso significa que PHP es front-end para llamar a otros servicios escritos en otros idiomas a través de REST, RPC ..etc?
Respuestas:
Ha confundido los términos "front-end" y "back-end" con "lado del servidor" y "lado del cliente". "Back-end" generalmente se refiere a sistemas que no están expuestos directamente al usuario (servidores de bases de datos, middleware, etc.), mientras que "front-end" generalmente se refiere a la aplicación (en el caso de la Web, esto normalmente significa estático y páginas web dinámicas) a las que accede directamente el cliente.
En una aplicación web, el cliente (el navegador del usuario) accede a páginas web que son almacenadas o generadas dinámicamente "del lado del servidor" por tecnologías "frontales". Esos componentes front-end pueden, a su vez, extraer datos u otra información de componentes "back-end". Entonces, una aplicación web escrita en PHP sería "front-end" pero "del lado del servidor". Sin embargo, si las páginas web contuvieran JavaScript para ser ejecutado por el navegador del usuario, ese código de JavaScript se ejecutaría "del lado del cliente".
Espero haber eliminado algo de confusión, pero ahora me arriesgo a crear algo más.
Primero, tenemos AJAX , que es un código (generalmente JavaScript) ejecutado en el cliente (por lo tanto, del lado del cliente), para crear las páginas web que ve al extraer información de servicios orientados a Internet que no generan por sí mismos páginas web. Los servicios están generando su lado del servidor de información en el front-end (ya que son públicos y puede apuntar su navegador directamente hacia ellos si conoce la URL).
En segundo lugar, JavaScript no se limita al uso del lado del cliente, por supuesto. Se ha vuelto cada vez más popular como lenguaje "del lado del servidor" (vea node.js para ver un ejemplo). Como tal, su uso más común es solo para el tipo de servicios de Internet que describí en el párrafo anterior.
Las cosas solían ser mucho más simples antes de la Web 2.0 . En aquel entonces, en el contexto de las aplicaciones web , el front-end era donde se generaban las páginas web, mientras que JavaScript solo se ejecutaba en el lado del cliente y creaba pequeños cosméticos en las páginas web como imágenes de alta iluminación cuando movía el mouse sobre ellas. Sin embargo, esa simplicidad hizo que las personas fueran perezosas con sus definiciones. Ahora la situación es más compleja, por lo que es importante ser preciso sobre estos términos.
(Ah, y si usted tiene que usar PHP, por favor mantenerlo en la parte delantera. Enfáticamente es no una tecnología buena de fondo. Y si alguna vez se encuentra a nadie crear un navegador que se ejecuta PHP del lado del cliente, brote de ellos.)
fuente
Creo que su pregunta puede ser bastante específica para PHP realmente, ya que no puedo ver ninguna de las otras tecnologías de back-end que menciona que se usan de esta manera.
PHP es un ejemplo divertido, ya que puede verse (de una manera bastante fea) visto como un lenguaje todo en uno con respecto a muchos proyectos web. Puede realizar sus tareas tradicionales de " back-end ", como operaciones de archivos y bases de datos, al tiempo que crea marcas de " front-end ".
Esto claramente puede conducir a un desastre de espagueti donde no hay una separación real de preocupación, por lo que realmente debería estar mal visto en mi mente. Para un gran ejemplo, si navega por la fuente de WordPress a menudo puede perderse, y ese es un proyecto donde culpo al lenguaje, la organización de la base de código es realmente muy buena.
Esto puede remediarse, de alguna manera, mediante el uso de un " motor de plantillas " (como Smarty )), pero sigue siendo PHP el que está construyendo el "front-end" al tiempo que proporciona la funcionalidad "back-end". Esta fue una decisión intencional detrás del diseño de PHP, sin embargo, después de todo, ¡es un " procesador de hipertexto "!
Por lo tanto, PHP puede adaptarse fácilmente a los usos " front-end " y " back-end ", lo que debería aclarar su ejemplo. Por lo tanto, es muy probable que tenga razón en que PHP procesará y creará todas las marcas para un front-end, pero hará solicitudes en otro lugar para recopilar los datos requeridos, lo más probable es que un servicio haya sido escrito en uno de los idiomas mencionados anteriormente. .
Personalmente, creo que toda la terminología "back-end" y "front-end" está un poco ... tal vez desactualizada. Prefiero que las cosas solo se refieran al lado del cliente y del servidor; entonces no hay ambigüedad real. *
Hace poco vi una especificación de cliente que requería un sistema de fondo escrito en node.js y herramientas asociadas, pero quería la compilación de front-end usando un marco PHP (Laravel). Esto viene con muchos costos asociados y, en mi opinión, no es una solución elegante y puede causar algunos problemas en el futuro.
Hablando personalmente, este tipo de configuraciones parece que alguien innecesariamente calzó PHP en otra pila, lo que significa que se requieren más recursos de los que realmente se necesitan, el personal de mantenimiento necesita exposición a una gama más amplia de tecnologías y hay más puntos de falla.
Además, también creo que hay muy pocos escenarios que justifiquen este tipo de pila intermedia; La mayoría de los lenguajes / frameworks de back-end son perfectamente capaces de generar el marcado requerido para el front-end. Aunque estoy para ser corregido allí.
* Sin embargo, para darle vuelta a su pregunta, ¿qué pasa con los sistemas de back-end creados con Javascript? (node.js;))
Editar:
Después de leer un comentario de @itsbruce, he decidido aclarar lo que quiero decir con la ambigüedad de mi terminología "front-end" / "back-end".
Tradicionalmente, esta terminología habría estado bien, arquitectónicamente las aplicaciones web eran mucho más simples, y me atrevo a decirlo, mucho más tonto. Es mucho más claro en mi mente decir "Lado del servidor" y "Lado del cliente", y esto se está volviendo más claro a medida que la tendencia actual de llevar más procesamiento y lógica al cliente se está volviendo común.
Se está volviendo aceptable hacer una buena cantidad de procesamiento de datos del lado del cliente (solo mire algunos de los marcos de javascript actualmente en tendencia), pero ¿es eso realmente front-end? El usuario no lo ve, ve los resultados, y según los criterios tradicionales que generalmente se considerarían "back-end"; pero esto está ocurriendo en el navegador ahora ...
Del mismo modo, y es increíblemente relevante para esta pregunta, ¿la construcción del marcado en PHP es realmente una tarea front-end? Lo dudo, una exploración rápida de las bolsas de trabajo muestra que pocos puestos de desarrollador front-end esperan experiencia o conocimiento de PHP; Sin embargo, la intuición sugeriría que el marcado de la interfaz es inherentemente front-end.
El hecho mismo de que esta pregunta exista actúa como un ejemplo de cómo " front-end " y " back-end " son intrínsecamente ambiguos y continuarán siéndolo.
Al referirse a tareas como "del lado del servidor" o "del lado del cliente", se pierde esa ambigüedad, usted sabe dónde se está ejecutando el código y qué idiomas se utilizarán. Si dijiste " front-end " en el ejemplo que ha proporcionado el OP, dudo que mucha gente diga " Oh, entonces PHP en el servidor ¿verdad? ".
fuente