Frontend in Sprachen geschrieben, die für das Backend verwendet werden! [geschlossen]

10

Aus meiner Erfahrung in der Webentwicklung weiß ich, dass Sprachen wie PHP, Java, Python usw. für Backend-Entwicklungsmaterialien (Software, die auf dem Server ausgeführt wird) und für Front-End-Sprachen JS / HTML / CSS verwendet werden.

Ich sehe jedoch, dass viele Unternehmen sagen, dass sie beispielsweise PHP für die Front-End-Entwicklung und Python für das Back-End verwenden.

Bedeutet das, dass PHP das Front-End für den Aufruf anderer Dienste ist, die in anderen Sprachen über REST, RPC usw. geschrieben wurden?

shox
quelle
3
Dieser Beitrag ist ziemlich schwer zu lesen (Textwand). Hätten Sie etwas dagegen bearbeiten sie in eine bessere Form ing?
Mücke

Antworten:

36

Sie haben die Begriffe "Front-End" und "Back-End" mit "Server-Seite" und "Client-Seite" verwechselt. "Back-End" bezieht sich normalerweise auf Systeme, die dem Benutzer nicht direkt ausgesetzt sind (Datenbankserver, Middleware usw.), während sich "Front-End" normalerweise auf die Anwendung bezieht (im Fall des Web bedeutet dies normalerweise statisch und dynamische Webseiten), auf die der Client direkt zugreift.

In einer Webanwendung greift der Client (der Browser des Benutzers) auf Webseiten zu, die von "Front-End" -Technologien "serverseitig" gespeichert oder dynamisch generiert werden. Diese Front-End-Komponenten können wiederum Daten oder andere Informationen von "Back-End" -Komponenten abrufen. Eine in PHP geschriebene Webanwendung wäre also "Front-End", aber "Server-Seite". Wenn die Webseiten jedoch Javascript enthalten, das vom Browser des Benutzers ausgeführt werden soll, wird dieser Javascript-Code "clientseitig" ausgeführt.

Hoffentlich habe ich einige Verwirrung beseitigt, aber jetzt riskiere ich, etwas mehr zu schaffen.

Erstens haben wir AJAX , einen Code (normalerweise JavaScript), der im Client (also clientseitig) ausgeführt wird, um die angezeigten Webseiten zu erstellen, indem Informationen von internetbezogenen Diensten abgerufen werden, die selbst keine Webseiten generieren. Die Dienste generieren ihre Informationen serverseitig im Front-End (da sie öffentlich sind und Sie Ihren Browser direkt auf sie richten können, wenn Sie die URL kennen).

Zweitens ist JavaScript natürlich nicht auf die clientseitige Verwendung beschränkt. Es ist als "serverseitige" Sprache immer beliebter geworden (siehe node.js für ein Beispiel). Daher wird es am häufigsten nur für die Art von Internetdiensten verwendet, die ich im vorhergehenden Absatz beschrieben habe.

Vor Web 2.0 waren die Dinge viel einfacher . Damals wurden im Kontext von Webanwendungen im Front-End Webseiten generiert, während JavaScript nur clientseitig ausgeführt wurde und Webseiten wie hochbeleuchtete Bilder geringfügig kosmetischer wurden, wenn Sie die Maus darüber bewegen. Diese Einfachheit machte die Leute jedoch faul über ihre Definitionen. Jetzt ist die Situation komplexer, daher ist es wichtig, diese Begriffe genau zu definieren.

(Oh, und wenn Sie haben PHP zu verwenden , um, halten Sie es bitte auf dem vorderen Ende. Es ist ausdrücklich nicht eine gute Back-End - Technologie. Und wenn Sie jemals jemand die Schaffung eines Browser finden , die PHP - Client-Seite ausgeführt wird , schießen sie.)

itsbruce
quelle
In Anbetracht Ihres letzten Satzes können Sie code.google.com/p/php-to-js :-P
Andrea
Wenn jede Sprache im Frontend und jede Sprache im Backend verwendet werden kann, ist die Unterscheidung dann nicht nutzlos in der Art und Weise, wie sie gefragt wurde? es kann nur im Kontext einer Anwendung beantwortet werden.
Claudiu Creanga
7

Ich denke, Ihre Frage ist möglicherweise sehr spezifisch für PHP, da ich keine der anderen von Ihnen erwähnten Back-End-Technologien sehen kann, die so verwendet werden.

PHP ist ein lustiges Beispiel, da es (auf eine ziemlich hässliche Art und Weise, die ich hinzufügen darf) in Bezug auf viele Webprojekte als All-in-One-Sprache angesehen werden kann. Sie können Ihre traditionellen " Back-End " -Aufgaben ausführen, z. B. Datei- und Datenbankoperationen, und gleichzeitig ein " Front-End " -Markup erstellen .

Dies kann eindeutig zu einem Spaghetti-Durcheinander führen, bei dem es keine wirkliche Trennung der Bedenken gibt, daher sollte es in meinem Kopf wirklich verpönt sein. Wenn Sie beispielsweise in der WordPress-Quelle stöbern, können Sie sich oft verlaufen - und das ist ein Projekt, bei dem ich die Sprache beschuldige. Die Organisation der Codebasis ist tatsächlich sehr gut.

Dies kann etwas durch die Verwendung einer " Templating Engine " (wie Smarty ) behoben werden - aber es ist immer noch PHP, das das "Front-End" erstellt und gleichzeitig die "Back-End" -Funktionalität bereitstellt. Dies war eine absichtliche Entscheidung hinter dem Design von PHP, aber es ist immerhin ein " Hypertext-Prozessor "!

So kann PHP problemlos sowohl in " Front-End " - als auch in " Back-End " -Verwendungen eingesetzt werden, was Ihr Beispiel verdeutlichen sollte. Daher haben Sie höchstwahrscheinlich Recht, dass PHP das gesamte Markup für ein Front-End verarbeitet und erstellt, aber irgendwo anders Anfragen stellt, um die erforderlichen Daten zu sammeln - höchstwahrscheinlich ein Dienst, der in einer der oben genannten Sprachen geschrieben wurde .

Persönlich finde ich, dass die gesamte Terminologie "Back-End" und "Front-End" etwas veraltet ist. Ich möchte lieber, dass die Dinge nur auf Client- und Serverseite bezogen werden. dann gibt es keine wirkliche Mehrdeutigkeit. *

Vor kurzem habe ich eine Client-Spezifikation gesehen, für die ein Back-End-System erforderlich war, das in node.js und den zugehörigen Tools geschrieben wurde, das Front-End-Build jedoch mit einem PHP-Framework (Laravel) erstellt werden sollte. Dies ist mit vielen damit verbundenen Kosten verbunden und meiner Meinung nach keine elegante Lösung und kann auf der ganzen Linie einige Probleme verursachen.

Persönlich scheinen diese Konfigurationen so zu sein, als hätte jemand PHP unnötig in einen anderen Stack integriert - was bedeutet, dass mehr Ressourcen erforderlich sind als tatsächlich erforderlich, das Wartungspersonal einer breiteren Palette von Technologien ausgesetzt sein muss und es mehr Fehlerquellen gibt.

Darüber hinaus denke ich, dass es nur sehr wenige Szenarien gibt, die diese Art von Zwischenstapel rechtfertigen. Die meisten Back-End-Sprachen / Frameworks sind perfekt in der Lage, den für das Front-End erforderlichen Aufschlag zu generieren. Obwohl ich dort korrigiert werden muss.

* Obwohl, um Ihre Frage auf den Kopf zu stellen. Was ist mit Back-End-Systemen, die mit Javascript erstellt wurden? (node.js;))

Bearbeiten:

Nachdem ich einen Kommentar von @itsbruce gelesen habe, habe ich mich entschlossen zu klären, was ich unter der Mehrdeutigkeit meiner Terminologie "Front-End" / "Back-End" verstehe.

Traditionell wäre diese Terminologie in Ordnung gewesen, architektonisch waren Webanwendungen viel einfacher - und ich wage es zu sagen, viel dümmer. In meinen Augen ist es viel sauberer, "Server Side" und "Client Side" zu sagen, und dies wird immer deutlicher, da der aktuelle Trend, mehr Verarbeitung und Logik auf den Client zu übertragen, immer häufiger wird.

Es wird akzeptabel, eine ganze Menge Daten auf Client-Seite zu verarbeiten (sehen Sie sich nur einige der derzeit im Trend befindlichen Javascript-Frameworks an), aber ist das wirklich Front-End? Der Benutzer sieht es nicht, er sieht die Ergebnisse - und nach traditionellen Kriterien, die im Allgemeinen als "Back-End" angesehen werden. Dies geschieht aber jetzt im Browser.

In ähnlicher Weise und unglaublich relevant für diese Frage, ist das Erstellen des Markups in PHP wirklich eine Front-End-Aufgabe? Ich bezweifle, dass ein kurzes Durchsuchen der Jobbörsen zeigt, dass nur wenige Front-End-Entwicklerpositionen PHP-Erfahrung oder -Wissen erwarten. Die Intuition würde jedoch darauf hinweisen, dass das Markup für die Schnittstelle von Natur aus Front-End ist.

Die Tatsache, dass diese Frage existiert, ist ein Beispiel dafür, wie " Front-End " und " Back-End " von Natur aus mehrdeutig sind und dies auch weiterhin sein werden.

Wenn Sie Aufgaben als "serverseitig" oder "clientseitig" bezeichnen, bei denen die Mehrdeutigkeit verloren geht, wissen Sie, wo der Code ausgeführt wird und welche Sprachen verwendet werden. Wenn Sie in dem vom OP bereitgestellten Beispiel " Front-End " sagten , bezweifle ich, dass viele Leute sagen würden: " Oh, also PHP auf dem Server, oder? ".

Fergus In London
quelle
3
Ich habe Sie nicht abgewählt, aber Ihre Antwort ist fast so schwer zu lesen wie die Frage, und sie spricht die Verwirrung über die Begriffe wirklich nicht an (wenn überhaupt, macht es sie noch schlimmer). Noch wichtiger ist , es einfach ist keine Zweideutigkeit zwischen "Front-End - v Back-End." Und "Client-Seite v Server-Seite."; Sie beschreiben unterschiedliche und unterschiedliche Beziehungen. Sie könnten genauso gut sagen: "Ich möchte lieber, dass wir uns nicht mehr mit Farbe und Form befassen. Es ist nicht eindeutig, dass die Dinge grün oder blau und rund oder quadratisch sein können und einige Dinge grün und quadratisch sind."
Itsbruce
Doh, ich hatte nicht genug Zeit zum Korrekturlesen, da ich mich wieder an die Arbeit machen musste. Prost auf den Kommentar, er hat mir die Möglichkeit gegeben, ihn zu bearbeiten. Ich halte mich zwar an meine Gedanken zur Terminologie, werde sie aber etwas erweitern. Ta.
Fergus In London
nicht unbedingt - Ich betrachte eine Webserver-Sprache als Teil des Clients (wenn man bedenkt, wie oft Webserver heutzutage gehackt werden, sollte dies ab dem ersten Tag als gefährdet angesehen werden), sodass serverseitige Sprachen, die Teil der Präsentation sind, unterschieden werden müssen Schicht aus serverseitigen Sprachen, die Dienste auf Anwendungsebene bereitstellen. PHP könnte also als "Front-End-Sprache auf der Serverseite" betrachtet werden.
Gbjbaanb