¿Es el término 'Front-End' sinónimo de 'Lado del cliente'? Si es así, ¿es este siempre el caso?

18

Como desarrollador web relativamente nuevo (autodidacta), he escuchado los términos front-end , lado del cliente , back-end y lado del servidor con bastante frecuencia. Para mí, front-end y back-end siempre fueron sinónimos del lado del cliente y del lado del servidor, respectivamente.

Sin embargo, a medida que comencé a trabajar con marcos MVC como CodeIgniter, me encontré con algunas instancias de front-end que se refieren básicamente a todo lo que ve el usuario final (incluido el código del lado del servidor), mientras que el back-end se ha referido a cualquier cosa el usuario final no ve (incluidos los CMS). Del lado del cliente y del servidor, para mí, son mucho más concretos en sus significados; tienen una línea muy distinta que los separa. Front-end y back-end, por otro lado, no.

En una conversación que recuerdo haber tenido con otro desarrollador web, se refirió a CodeIgniter (en su totalidad) como un front-end, y esto me dejó sin aliento. No estaba seguro de si corregirlo y decir que CodeIgniter era mi back-end, o si mis definiciones de los dos términos estaban completamente equivocadas.

La búsqueda de definiciones de front-end y back-end me confundió un poco más en algunos aspectos, aunque aclararon algunas cosas. Solo me gustaría saber dónde se dibujan las líneas entre estos cuatro términos y cómo se unen en el contexto del desarrollo web (específicamente en una pila LAMP).

CORRIENTE CONTINUA_
fuente
1
He trabajado con un tipo que usó "front end" y "back end" para referirse a "frente" y "atrás". Si él era o no "correcto" es otra pregunta.
user16764
Deberíamos usar la palabra "posterior" en su lugar. Bromeando Desearía que hubiera otra frase para eso. Los sinónimos de "back end" no son alentadores.
Erik Aronesty

Respuestas:

17

No creo que haya una definición formal para esos términos, y como notaron, en algunos casos hay superposición.

front-endy client-sidesuperponerse.
server-sidey back-endtambién se superponen.

Si tuviera que dividir los pelos, ofrecería estos límites aproximados:

  • client-sidees una aplicación que se ejecuta en la computadora de los usuarios. Podría ser una aplicación independiente (más a menudo) o podría referirse a una interfaz basada en un navegador web (menos probable).
  • front-endtambién se enfrenta al usuario final y generalmente se ejecuta en una interfaz basada en un navegador web. No he oído hablar de clientes gruesos como a front-end.
  • back-endse refiere a procesos y servicios que se ejecutan en otro servidor o en el fondo de la computadora de los usuarios. La mayoría de las veces, se refiere a procesos que no están en la computadora de los usuarios finales. Pero la clave, como mencionó, es que el usuario final no necesariamente conoce los procesos en ejecución.
  • server-sidees una extensión de, back-endpero refuerza explícitamente el hecho de que los procesos se ejecutan en otro lugar y no en las computadoras de los usuarios finales.

A modo de ejemplo, y para resaltar la confusión entre los términos, usaré Minecraft como ejemplo.

Minecraft tiene un

  • client-side aplicación cuando ejecuta los archivos jar localmente con su propia JVM.
  • front-end si elige ejecutar la aplicación cliente en su navegador web
  • back-end proceso que puede ejecutarse localmente en su máquina si está en modo independiente
  • server-side procesar si elige iniciar sesión en un servidor que aloja la aplicación de servidor de Minecraft.

Si profundizas en algunas de las estadísticas de Minecraft, verás que simplemente designan un componente clienty serverpara el juego; no necesariamente les importa dónde se ejecutan esos componentes.


Para responder directamente a sus preguntas:

¿Es el término 'Front-End' sinónimo de 'Lado del cliente'?

Algo así, pero no realmente. Hay un matiz entre los términos si está discutiendo cosas fuera del mundo basado en la web. Si está estrictamente dentro del mundo basado en la web, entonces sí, son funcionalmente sinónimos.

Si es así, ¿es este siempre el caso?

En el mundo web, diría que sí. En otros ámbitos, diría que no, como se explica en las definiciones generales que ofrecí.


fuente
Eso es lo que yo pensaba. Gracias por ayudarme a aclarar esto en mi cabeza.
DC_
2
El backend a menudo se usa para referirse a la parte de administración del lado del cliente de un sitio web / aplicación.
Florian Margaine
19

El lado del servidor se ejecuta en el servidor. El lado del cliente se ejecuta en el cliente. El back-end está procesando datos. Front-end lo está mostrando.

Mira esta página web. Extraer todos los comentarios de la base de datos es un trabajo de back-end del lado del servidor. La distribución de esos datos en una plantilla es un trabajo de front-end, del lado del servidor. Los widgets de votación AJAX y el elegante cuadro de entrada de texto son front-end, del lado del cliente.

Sean McSomething
fuente
44
+1 para señalar la ortogonalidad entre el concepto front-end / back-end y el concepto del lado del cliente / del lado del servidor
Francesco Feltrinelli
1

En general, encuentro que usar el lado del cliente y el lado del servidor para describir el desarrollo / desarrolladores es menos vago. Esa parte del lado del cliente donde estamos haciendo malabares / formateando datos puede verse como un componente de fondo. Por otro lado, hay toda la plantilla que tiende a suceder en el back-end, que al ser "para el front-end" tiende a hacer que la gente hable de ellos como desarrollo front-end Java o C #. Es raro, pero lo he visto en descripciones de trabajo.

Pero sí, en general, el front end es la parte donde ocurre la interacción. El back-end es la parte donde toda esa interacción se convierte en algo útil.

Erik Reppen
fuente
0

Esta pregunta es algo más antigua, pero déjame agregar mi 2c:

En mi propio desarrollo web, utilicé el término "frontend", que significa código, u otros recursos, que se procesan en el navegador durante un tiempo. Ahora, uso el término "cliente", porque podría ser confuso especialmente. al hacer aplicaciones web. (Aplicaciones de una sola página)

Simplemente porque en el lado del backend, también hay una "interfaz", lo que significa en general la parte de la aplicación que es responsable de la salida (al navegador). Entonces "frontend" puede significar dos cosas diferentes. Sin embargo, el término "cliente" describe más claramente algo que está relacionado con el cliente real (en este caso, el navegador).

PD: Bueno, tal vez también debería cambiar mi apodo a "client_dev" ahora;)

frontend_dev
fuente
0

El lado del cliente en una aplicación web está bajo el control del usuario / cliente, el lado del servidor está bajo el control del desarrollador. Esta es una de las razones por las cuales uno debe validar los datos en el servidor.

Los términos front-end y back-end se usan a menudo como sinónimos para el lado del cliente y del servidor y, en muchos casos, está bien. Sin embargo, también hay importantes contraejemplos. Para , el front end es cualquier cosa que muestra algo al usuario.

En la siguiente imagen, puede ver tecnologías / conceptos típicos y cómo encajan en los cuadrantes (front-end, back-end) / (lado del cliente, lado del servidor).

ingrese la descripción de la imagen aquí

Desarrolladores front-end y back-end

Los desarrolladores frontend y backend son dos roles muy comunes. La línea se vuelve un poco borrosa cuando tienes cosas como React que se puede procesar en el lado del servidor y Flask que incluye el motor de plantillas jinja .

Y aunque pondría tecnologías como la base de datos Web SQL y la API de base de datos indexada en el cuadrante "backend del lado del cliente", la función que generalmente conoce esto es la función de desarrollador front-end.

  • Los desarrolladores frontend deben saber sobre HTML, CSS, DOM y las capacidades generales del navegador (por ejemplo, caniuse ). Por lo general, saben algo de jQuery o React. Aunque es de backend según mi definición, esperaría que los desarrolladores frontend sepan sobre el almacenamiento del lado del cliente
  • Los desarrolladores de backend deben saber sobre servidores web como nginx, gunicorn, Apache o node.js. Deben conocer al menos una base de datos SQL (Postgres, MariaDB / MySQL, ...), almacenes de valores clave (Redis), desarrollo de API (REST y GraphQL). LAMP era una pila típica hace un tiempo. ¡NO esperaría que un desarrollador de back-end supiera nada sobre los navegadores!

Diseñador de UI vs Desarrollador Front End

Otros dos roles son el diseñador de UI y el desarrollador frontend. Entonces, una diferencia es que uno es diseñador y otro desarrollador.

Objetivo:

  • Los diseñadores de UI redactan la experiencia del usuario
  • Front End Developer se asegura de que se vea como se esperaba (construyendo lo real a partir del borrador)

Herramientas:

  • Los diseñadores de IU utilizan principalmente Adobe Photoshop / Illustrator / Sketch / Balsamiq / Invision.
  • Los desarrolladores front-end usan React, Vue, Angular

API: REST y GraphQL

Las API son proporcionadas por los equipos de back-end y son utilizadas por las interfaces para llenar la aplicación con los datos. El backend es el almacenamiento persistente en todos los dispositivos, el frontend es la capa de presentación. La API es el canal de comunicación para ambos.

Martin Thoma
fuente