web-dev-qa-db-fra.com

Le terme «frontal» est-il synonyme de «côté client»? Si oui, est-ce toujours le cas?

En tant que développeur Web relativement nouveau (autodidacte), j'ai entendu les termes front-end, côté client, back-end , et côté serveur assez souvent. Pour moi, front-end et back-end étaient toujours synonymes de côté client et côté serveur, respectivement.

Cependant, comme j'ai commencé à travailler avec des frameworks MVC comme CodeIgniter, je suis tombé sur quelques exemples de front-end faisant référence à tout ce que l'utilisateur final voit (y compris le code côté serveur), tandis que le back-end fait référence à tout l'utilisateur final ne voit pas (y compris les CMS). Côté client et côté serveur, pour moi, leur signification est beaucoup plus concrète; ils ont une ligne très distincte les séparant. En revanche, le front-end et le back-end ne le font pas.

Dans une conversation dont je me souviens avoir eu avec un autre développeur Web, il a fait référence à CodeIgniter (dans son intégralité) comme un front-end, et cela m'a jeté pour une boucle. Je ne savais pas trop si je devais le corriger et dire que CodeIgniter était mon back-end, ou si mes définitions des deux termes étaient complètement fausses.

La recherche de définitions du front et du back-end m'a un peu plus troublé à certains égards, bien qu'ils aient clarifié certaines choses. Je voudrais juste savoir où les lignes sont tracées entre ces quatre termes, et comment elles se rejoignent dans le contexte du développement Web (en particulier sur une pile LAMP).

20
HellaMad

Je ne pense pas qu'il existe une définition officielle de ces termes et, comme vous l'avez indiqué, il y a chevauchement dans certains cas.

front-end et client-side chevauchement.
server-side et back-end se chevauchent également.

Si je divisais les cheveux, je proposerais ces limites approximatives:

  • client-side est une application qui s'exécute sur l'ordinateur des utilisateurs. Il peut s'agir d'une application autonome (plus souvent) ou d'une référence à une interface basée sur un navigateur Web (moins probable).
  • front-end fait également face à l'utilisateur final et s'exécute généralement dans une interface basée sur un navigateur Web. Je n'ai pas entendu parler de clients lourds appelés front-end.
  • back-end fait référence aux processus et services qui s'exécutent sur un autre serveur ou en arrière-plan de l'ordinateur des utilisateurs. Plus souvent qu'autrement, il se réfère à des processus qui sont pas sur l'ordinateur des utilisateurs finaux. Mais la clé, comme vous l'avez mentionné, est que l'utilisateur final n'est pas nécessairement au courant des processus en cours.
  • server-side est une extension de back-end mais renforce explicitement le fait que les processus s'exécutent ailleurs et non sur les ordinateurs des utilisateurs finaux.

À titre d'exemple, et pour souligner la confusion entre les termes, je vais utiliser Minecraft comme exemple.

Minecraft a un

  • client-side application lorsque vous exécutez les fichiers jar localement avec votre propre machine virtuelle Java.
  • front-end si vous choisissez d'exécuter l'application cliente dans votre navigateur Web
  • back-end processus pouvant s'exécuter localement sur votre machine si vous êtes en mode autonome
  • server-side processus si vous choisissez de vous connecter à un serveur hébergeant l'application serveur Minecraft.

Si vous fouillez dans certaines statistiques de Minecraft, vous verrez qu'elles désignent simplement un composant client et server au jeu; ils ne se soucient pas nécessairement de l'emplacement de ces composants.


Le terme "frontal" est-il synonyme de "côté client"?

Un peu, mais pas vraiment. Il y a une nuance entre les termes si vous discutez de choses en dehors du monde Web. Si vous êtes strictement dans le monde basé sur le Web, alors oui, ils sont fonctionnellement synonymes.

Si oui, est-ce toujours le cas?

Dans le monde du Web, je dirais que oui. Dans d'autres domaines, je dirais non, comme expliqué dans les définitions approximatives que j'ai proposées.

18
user53019

Côté serveur s'exécute sur le serveur. Côté client s'exécute sur le client. Le back-end crunch des données. Le front-end l'affiche.

Regardez cette page Web. Extraire tous les commentaires de la base de données est un travail côté serveur, côté serveur. La disposition de ces données dans un modèle est un travail frontal côté serveur. Les widgets de vote AJAX et la zone de saisie de texte fantaisie sont frontaux côté client.

20
Sean McSomething

Je trouve généralement que l'utilisation côté client et côté serveur pour décrire le développement/les développeurs est moins vague. Cette partie du côté client où nous jonglons/mettons en forme des données peut être considérée comme un composant principal. D'un autre côté, il y a tous les modèles qui ont tendance à se produire sur le back-end, ce qui étant "pour le front-end" a tendance à amener les gens à en parler en tant que front-end Java ou développement C #. C'est rare, mais je l'ai vu dans les descriptions de travail.

Mais oui, de manière générale, le front-end est la partie où l'interaction se produit. Le back-end est la partie où toute cette interaction se transforme en quelque chose d'utile.

1
Erik Reppen

Cette question est un peu plus ancienne mais permettez-moi d'ajouter mon 2c:

Dans mon propre développement Web, j'ai utilisé le terme "frontend" qui signifie code - ou d'autres ressources - qui sont traitées dans le navigateur pendant un certain temps. Maintenant, j'utilise le terme "client", car cela pourrait être source de confusion, en particulier. lors de la création d'applications Web. (Applications à page unique)

Tout simplement parce que du côté du backend, il y a aussi un "frontend", ce qui signifie en général la partie de l'application qui est responsable de la sortie (vers le navigateur). Donc, "frontend" peut en fait signifier deux choses différentes. Le terme "client" est cependant à mon sens décrivant plus clairement quelque chose qui est lié au client réel (dans ce cas, le navigateur).

PS: Eh bien, je devrais peut-être aussi changer mon surnom en "client_dev" maintenant;)

0
frontend_dev

Le côté client dans une application Web est sous le contrôle de l'utilisateur/client, le côté serveur est sous le contrôle du développeur. C'est une des raisons pour lesquelles on devrait faire la validation des données sur le serveur.

Les termes front-end et back-end sont souvent utilisés également pour côté client et côté serveur et dans de nombreux cas, c'est ok. Cependant, il existe également des contre-exemples importants. Pour moi, le frontal est tout ce qui montre quelque chose à l'utilisateur.

Dans l'image suivante, vous pouvez voir les technologies/concepts typiques et comment ils s'intègrent dans les quadrants (frontal, arrière)/(côté client, côté serveur).

enter image description here

Développeurs Front End et Back End

Développeur Frontend et Backend sont deux rôles très courants. La ligne devient un peu floue lorsque vous avez des choses comme React qui peut être rendu côté serveur et Flask qui inclut le jinja templating engine .

Et même si je mettrais des technologies comme la base de données Web SQL et API de base de données indexée dans le quadrant "backend côté client", le rôle qui en est généralement informé est le rôle de développeur frontal.

  • Les développeurs frontend devraient connaître HTML, CSS, le DOM et les capacités générales du navigateur (par exemple caniuse ). En règle générale, ils connaissent certains jQuery ou React. Bien qu'il soit backend selon ma définition, je m'attendrais à ce que les développeurs frontend connaissent stockage côté client
  • Les développeurs backend devraient connaître les serveurs Web comme nginx, gunicorn, Apache ou node.js. Ils doivent connaître au moins une base de données SQL (Postgres, MariaDB/MySQL, ...), les magasins de valeurs-clés (Redis), le développement d'API (REST et GraphQL). LAMPE était une pile typique il y a quelque temps. Je ne m'attendrais pas à ce qu'un développeur principal sache quoi que ce soit sur les navigateurs!

UI Designer vs Front End Developer

Deux autres rôles sont le concepteur d'interface utilisateur et le développeur frontend. Donc, une différence est que l'un est concepteur et l'autre développeur.

Objectif:

  • Les concepteurs d'interface utilisateur rédigent l'expérience utilisateur
  • Le développeur frontal s'assure qu'il ressemble à ce qui est attendu (en construisant la vraie chose à partir du brouillon)

Outils:

  • Les concepteurs d'interface utilisateur utilisent principalement Adobe Photoshop/Illustrator/Sketch/Balsamiq/Invision.
  • Les développeurs Front End utilisent React, Vue, Angular

API: REST et GraphQL

Les API sont fournies par les équipes back-end et sont utilisées par les frontaux pour remplir l'application avec les données. Le backend est le stockage persistant sur les appareils, le frontend est la couche de présentation. L'API est le canal de communication pour les deux.

0
Martin Thoma