Front-end écrit dans les langues utilisées pour le back-end! [fermé]

10

D'après mon expérience dans le développement web, je sais que des langages comme PHP, Java, Python..etc sont utilisés pour les trucs de développement backend (logiciel qui s'exécute sur le serveur), et pour les langages frontaux, JS / HTML / CSS sont utilisés.

Mais je vois de nombreuses entreprises dire qu'elles utilisent, par exemple, PHP pour le développement front-end et python pour le back-end.

Cela signifie-t-il que PHP est frontal pour appeler d'autres services écrits dans d'autres langages via REST, RPC ..etc?

shox
la source
3
ce post est assez difficile à lire (mur de texte). Pourriez-vous le modifier sous une meilleure forme?
gnat

Réponses:

36

Vous avez confondu les termes "front-end" et "back-end" avec "côté serveur" et "côté client". "Back-end" se réfère généralement à des systèmes qui ne sont pas directement exposés à l'utilisateur (serveurs de base de données, middleware, etc.), tandis que "front-end" se réfère généralement à l'application (dans le cas du Web, cela signifie normalement statique et pages Web dynamiques) accessibles directement par le client.

Dans une application Web, le client (le navigateur de l'utilisateur) accède à des pages Web qui sont stockées ou générées dynamiquement «côté serveur» par des technologies «frontales». Ces composants frontaux peuvent, à leur tour, extraire des données ou d'autres informations des composants "principaux". Une application web écrite en PHP serait donc "front-end" mais "côté serveur". Cependant, si les pages Web contenaient du javascript à exécuter par le navigateur de l'utilisateur, ce code javascript serait exécuté "côté client".

J'espère que j'ai éliminé une certaine confusion, mais maintenant je risque d'en créer davantage.

Tout d'abord, nous avons AJAX , qui est du code (généralement JavaScript) exécuté dans le client (donc côté client), pour créer les pages Web que vous voyez en extrayant des informations des services accessibles sur Internet qui ne génèrent pas eux-mêmes des pages Web. Les services génèrent leurs informations côté serveur sur le front-end (car ils sont publics et vous pouvez pointer votre navigateur directement vers eux si vous connaissez l'url).

Deuxièmement, JavaScript n'est pas limité à une utilisation côté client, bien sûr. Il est devenu de plus en plus populaire en tant que langage "côté serveur" (voir node.js pour un exemple). En tant que tel, son utilisation la plus courante concerne uniquement le type de services accessibles sur Internet que j'ai décrits dans le paragraphe précédent.

Les choses étaient beaucoup plus simples avant le Web 2.0 . À l'époque, dans le contexte des applications Web , le front-end était l'endroit où les pages Web étaient générées, tandis que JavaScript ne s'exécutait que côté client et rendait les pages Web mineures comme les images lumineuses lorsque vous passiez la souris dessus. Cependant, cette simplicité a rendu les gens paresseux au sujet de leurs définitions. Maintenant, la situation est plus complexe, il est donc important d'être précis sur ces termes.

(Oh, et si vous devez utiliser PHP, veuillez le garder sur le front-end. Ce n'est absolument pas une bonne technologie back-end. Et si jamais vous trouvez quelqu'un qui crée un navigateur qui exécute PHP côté client, tirez-le.)

itsbruce
la source
Compte tenu de votre dernière phrase, vous pouvez profiter de code.google.com/p/php-to-js :-P
Andrea
si toutes les langues peuvent être utilisées sur le frontend et que toutes les langues peuvent être utilisées sur le backend, la distinction n'est-elle pas inutile dans la manière dont elle a été posée? il ne peut y être répondu que dans le cadre d'une application.
Claudiu Creanga
7

Je pense que votre question peut être très spécifique à PHP, car je ne vois aucune des autres technologies back-end que vous mentionnez être utilisées comme ça.

PHP est un exemple amusant car il peut être (d'une manière plutôt laide je peux ajouter) considéré comme un langage tout-en-un en ce qui concerne de nombreux projets Web. Vous pouvez effectuer vos tâches " back-end " traditionnelles - telles que les opérations de fichiers et de bases de données, tout en créant une balise " front-end ".

Cela peut clairement conduire à un gâchis de spaghetti où il n'y a pas de véritable séparation des préoccupations, donc cela devrait vraiment être mal vu dans mon esprit. Pour un excellent exemple, si vous parcourez la source wordpress, vous pouvez souvent vous perdre - et c'est un projet où je blâme la langue, l'organisation de la base de code est en fait très bonne.

Cela peut être corrigé, quelque peu, en utilisant un " moteur de modèle " (comme Smarty )) - mais c'est toujours PHP qui construit le "front-end" tout en fournissant également la fonctionnalité "back-end". Ce fut une décision intentionnelle derrière la conception de PHP cependant, c'est après tout un " processeur hypertexte "!

PHP peut donc facilement s'adapter aux utilisations " front-end " et " back-end ", ce qui devrait clarifier votre exemple. Par conséquent, vous avez très probablement raison en ce que PHP traitera et construira toutes les balises pour un frontal, mais il fera des demandes ailleurs pour recueillir les données requises - très probablement un service écrit dans l'un des langages susmentionnés .

Personnellement, je pense que toute la terminologie "back-end" et "front-end" est un peu .. dépassée peut-être. Je préfère que les choses soient simplement référencées côté client et côté serveur; alors il n'y a pas de véritable ambiguïté. *

Très récemment, j'ai vu une spécification client qui nécessitait un système back-end écrit dans node.js et les outils associés, mais je voulais la construction front-end en utilisant un framework PHP (Laravel). Cela s'accompagne de nombreux coûts associés et, à mon avis, ce n'est pas une solution élégante et peut causer quelques problèmes en fin de compte.

Personnellement, ce type de configurations semble que quelqu'un a inutilement intégré PHP dans une autre pile - ce qui signifie que plus de ressources sont nécessaires que ce qui est réellement nécessaire, le personnel de maintenance doit être exposé à un plus large éventail de technologies et il y a plus de points de défaillance.

De plus, je pense également qu'il y a très peu de scénarios qui justifient ce type de pile intermédiaire; la plupart des langages / frameworks back-end sont parfaitement capables de générer le balisage requis pour le front-end. Bien que je sois corrigé là-bas.

* Bien que, pour tourner votre question sur sa tête. (node.js;))

Éditer:

Après avoir lu un commentaire de @itsbruce, j'ai décidé de clarifier ce que je veux dire par l'ambiguïté de ma terminologie "front-end" / "back-end".

Traditionnellement, cette terminologie aurait été bonne, les applications Web architecturales étaient beaucoup plus simples - et j'ose le dire, beaucoup plus stupides. C'est beaucoup plus propre dans mon esprit de dire «côté serveur» et «côté client», et cela devient plus clair à mesure que la tendance actuelle à pousser davantage le traitement et la logique vers le client devient courante.

Il devient acceptable de faire une bonne quantité de traitement de données côté client (il suffit de regarder certains des cadres javascript actuellement en vogue), mais est-ce vraiment frontal? L'utilisateur ne le voit pas, il en voit les résultats - et selon des critères traditionnels qui seraient généralement considérés comme des "back-end"; mais cela se produit dans le navigateur maintenant ..

De même, et incroyablement pertinent pour cette question, la construction du balisage en PHP est-elle vraiment une tâche frontale? J'en doute, une navigation rapide sur les sites d'offres d'emploi montre que peu de postes de développeurs frontaux attendent une expérience ou des connaissances PHP; pourtant, l'intuition suggère que le balisage de l'interface est intrinsèquement frontal.

Le fait même que cette question existe constitue un exemple de la façon dont " front-end " et " back-end " sont intrinsèquement ambigus et continueront de l'être.

En faisant référence aux tâches comme «côté serveur» ou «côté client», cette ambiguïté est perdue, vous savez où le code s'exécute et quelles langues seront utilisées. Si vous avez dit " front-end " dans l'exemple fourni par l'OP, je doute que beaucoup de gens diraient " Oh, alors PHP sur le serveur n'est-ce pas? ".

Fergus à Londres
la source
3
Je ne vous ai pas voté contre, mais votre réponse est presque aussi difficile à lire que la question et elle ne résout vraiment pas la confusion sur les termes (si quoi que ce soit, cela aggrave la situation). Plus important encore , il suffit est pas d' ambiguïté entre "back-end v frontal." Et "v côté client côté serveur."; ils décrivent des relations différentes et distinctes. Autant dire: «Je préfère que nous arrêtions de parler de couleur et de forme; il est ambigu que les choses puissent être vertes ou bleues et rondes ou carrées et que certaines choses soient vertes et carrées».
itsbruce
Doh, je n'ai pas eu assez de temps pour relire car j'ai dû retourner au travail. Bravo pour le commentaire, cela m'a donné une tête à éditer. Je reste fidèle à mes réflexions sur la terminologie, mais je vais en parler un peu. Ta.
Fergus à Londres le
pas nécessairement - je considère qu'une langue de serveur Web fait partie du client (compte tenu de la fréquence à laquelle les serveurs Web sont piratés de nos jours, elle devrait être considérée comme compromise dès le premier jour), il est donc nécessaire de distinguer les langues côté serveur qui font partie de la présentation. niveau des langues côté serveur qui fournissent des services de niveau application. PHP pourrait donc être considéré comme un langage "frontal, côté serveur".
gbjbaanb