Heim  >  Artikel  >  Backend-Entwicklung  >  10 Vergleichsherausforderungen zwischen PHP und Nodejs

10 Vergleichsherausforderungen zwischen PHP und Nodejs

WBOY
WBOYOriginal
2016-08-08 09:19:021362Durchsuche

In einem aktuellen Artikel von SitePoint PHP vs. Node.js Smackdown verglich Craig Buckler, wie die beiden Sprachen eine Reihe von 10 Herausforderungen bewältigten, um zu entscheiden, welche insgesamt besser war.

Craig spricht in dem Buch davon, dass diese Vergleiche immer etwas widersprüchlich sind. Als unterhaltsame Nachbereitung haben wir Bruno Åkvorc (PHP-Entwickler bei SitePoint) und James Hibbard (JavaScript-Entwickler bei SitePoint) gebeten, zu jeder Runde Kommentare abzugeben.

Hier sind ihre detaillierten Ansichten...

PHP 和 Node.js 的角摔

Runde 1: Start

Runde 1 Die Herausforderung besteht darin, herauszufinden, wie gut Sie können Sprechen Sie jede Sprache. Sie können schnell eine „Hello World“-Seite erstellen. Dazu gehört auch der Zeitaufwand für die Einrichtung der Serverumgebung.

Nach Craigs Einschätzung hat PHP diese Runde teilweise gewonnen, weil die Sprache „konzeptionell einfacher“ und „für neue Entwickler weniger einschüchternd“ war.

Bruno:

PHP gewinnt die „Start“-Runde, nur weil mehr Hosts die Sprache unterstützen, sodass der Einstieg sehr einfach ist. Es ist sofort einsatzbereit, ohne dass weitere Schritte erforderlich sind. Wenn mehr Hosts die Verwendung der Node-Befehlszeile ignorieren und direkt zum Hochladen von Dateien und einer einfachen Taste „App neu laden“ auf dem Bedienfeld übergehen würden, wäre beides dasselbe. Was die eigentliche Syntax zur Darstellung auf dem Bildschirm angeht, ist PHP jedoch einfacher – insbesondere für diejenigen, die keine Programmiererfahrung haben.

James:

Ich sehe keinen großen Unterschied zwischen den beiden, wenn ich auf meinem lokalen Computer entwickle. Um PHP-Skripte in Ihrem Browser auszuführen, müssen Sie etwas Serversoftware installieren. Um Node-Skripte auszuführen, müssen Sie Node und vorzugsweise ein Web-Framework wie Express installieren. Wie Craig jedoch sagte, ist PHP „konzeptionell einfacher“. hat eine höhere Eintrittsbarriere. Darüber gibt es keinen Streit.

Runde 2: Hilfe und Support

In der zweiten Runde wird untersucht, wie einfach es ist, Hilfe und Support in beiden Sprachen zu erhalten. PHP gewinnt diese Runde vor allem, weil es es schon länger gibt.

Bruno:

Halten Sie darüber Stillschweigen.

James:

Ich stimme dieser Aussage zu. Node ist eine neue Technologie, daher wird es vorerst weniger Hilfe geben. Aber wenn Node immer ausgereifter wird, wird dieser Aspekt kein Problem mehr sein.

Dritte Runde: Grammatik

Die dritte Runde vergleicht die Schwierigkeit, die Grammatik der beiden Sprachen zu verstehen. Craig entschied, dass Node diese Runde gewonnen hat.

Bruno:

Ich bin mit dieser Ansicht überhaupt nicht einverstanden. Es gibt tatsächlich einige Macken in der PHP-Syntax, von denen viele behoben wurden und viele weitere in neuen Versionen entfernt werden. Andererseits gibt es auch das Problem „dieses“ in JS~

In Bezug auf Punkt 3 (bei der Entwicklung mit js müssen Sie nicht zwischen clientseitiger und serverseitiger Entwicklung wechseln) Ich bin mit diesem Konzept nicht einverstanden. Die Serverumgebung und die Client-Entwicklungsumgebung sind vollständig voneinander getrennt, und es ist weiterhin ein Wechsel im Gehirn erforderlich. Es gibt immer eine neue Syntax, die Sie im Browser nicht verwenden können und umgekehrt, es handelt sich also in gewisser Weise auch um einen Sprachwechsel.

Punkt 4 (Wenn Sie JS verstehen, werden Sie Lust darauf bekommen, es häufiger zu verwenden) Ich stimme dem bis zu einem gewissen Grad zu. Ich verwende JS und PHP schon seit vielen Jahren bei der Arbeit, JS sogar noch länger, aber ich habe wenig Vorliebe dafür – obwohl das eine rein persönliche Vorliebe ist.

James:

Ich liebe JavaScript. Ich weiß, dass es seine Macken hat, und ich weiß aus irgendeinem Grund, dass ECMAScript 2015 die Dinge aufmischen und einige aufregende neue Funktionen in die Sprache bringen wird. JavaScript ist leistungsstark und flexibel und kann viele verschiedene Programmierstile unterstützen. Ich verwende lieber JavaScript als PHP. Node (Node.js) ist einer davon.

Runde 4: Entwicklungstools

Runde 4: Betrachtet man die von diesen beiden Technologien verwendeten Entwicklungstools, ist Node etwas besser, da es über das Entwicklungstool npm verfügt.

Bruno:

Obwohl sich Entwickler ursprünglich von npm inspirieren ließen, gibt es jetzt Sprünge und Grenzen, die komfortabler zu verwenden sind als npm, und wenn Sie beide dieselbe Bibliothek auf Ihrem Computer installiert haben Bei dieser Version führt Leaps and Bounds nicht zum Absturz Ihres Systems. Und im Vergleich zu npm ermöglichen Leaps and Bounds Designern die Verwendung rekursiven Denkens, und rekursives Denken ist so wichtig, dass Entwickler, wenn sie bereit sind, einen Paketmanager zu erstellen, dies als Erstes in Betracht ziehen.

npm hat auch einen fatalen Fehler, den ich als „Entwickler-Kollaborationsfreundlichkeit“ bezeichne. Für npm können nur die Entwickler selbst verstehen, was sie schreiben. Schließlich funktioniert npm nicht gut mit Vagrant, was Sie direkt daran hindert, selbstständig zu arbeiten, ganz zu schweigen davon, dass npm nicht auf die Bedürfnisse der Benutzer achtet. Es gibt einen seit vielen Jahren bestehenden Fehler in npm, der die Software unter Windows grundsätzlich unbrauchbar macht, was kein kleines Problem darstellt. Natürlich gibt es in PHP viele dumme Fehler, aber diese Fehler werden keine Probleme auf Ihrem System verursachen.

Es stimmt, dass PHP keinen Compiler mitbringt, aber ich glaube nicht, dass das so sein sollte. Ein solcher Komfort sollte nicht durch einen Paketmanager oder eine eigenständige Anwendung erreicht werden. Wenn eines Tages jemand einen guten Paketmanager für Node entwickelt, wird es äußerst schwierig sein, ihn durch den vorhandenen Compiler zu ersetzen. Machen Sie es relativ unabhängig und die Leute können leicht wechseln. Darüber hinaus ist für die Installation lediglich die Eingabe einer Codezeile in das Terminal oder das Herunterladen eines Installationsprogramms erforderlich.
Die Aussage im Buch, dass der Compiler kaum Einfluss hat, ist ein offensichtlicher Fehler. Der Compiler hat sich seit der Entwicklung von PHP auf jeden neuen PHP-Entwickler ausgewirkt, und einige der besten mussten ihn zu ihrer bestehenden Pipeline hinzufügen. Nur weil es viele PHP-Benutzer gab, bevor es den Compiler gab, heißt das nicht, dass er weniger nützlich ist. Tatsächlich hat es seit seiner Einführung enorme Auswirkungen gehabt. Die Behauptungen einiger, dass es „geringe Auswirkungen auf die Gemeinschaft“ geben würde, entbehren jeglicher faktischen Grundlage.
Nun kann ich nicht mit der Tatsache streiten, dass die meisten PHP-Entwickler Node installiert haben wollen, das ist eine wahre Tatsache. Leider wurden viele gute Tools zuerst auf Basis von Node entwickelt, aber ich hoffe immer noch, dass es genauso wie die Node-freie Entwicklungsumgebung auch für die Entwicklung von BowerPHP verwendet werden kann.

James:

Ich bin froh, dass sich jemand Node anschließt.

Ich mag npm. Es ist einfach zu installieren, einfach zu verwenden und bietet Tausende von Paketen für fast jeden Bedarf. Mir gefällt auch die Tatsache, dass npm globale und lokale Pakete auswählen kann (im Vergleich zu einigen Sprachen wie Ruby, deren Standard erfordert, dass Ihre Pakete zusammen mit Ihrer Ruby-Version installiert werden). Auch die Werkzeuge sind großartig. Einige Tools, wie Bower und Grunt, haben einen festen Platz in meinem Workflow und haben meine Produktivität exponentiell gesteigert.
Erwähnenswert ist auch, dass npm eine Betaversion von Version 3 entwickelt hat. Es löst viele der von Bruno erwähnten Probleme, wie z. B. verschachtelte node_modules-Methodenfehler usw.

Das Folgende wird aus dem gesamten Smackdown zitiert:

PHP-Entwickler möchten (oder müssen) möglicherweise bei bestimmten Gelegenheiten Node.js installieren. Das Gegenteil ist nicht der Fall.

Runde 5: Umwelt

In Runde 5 geht es um die Verfügbarkeit und den Einsatz der Technologie sowie darum, welche Plattformen und Ökosysteme sie unterstützen. Craig ist sich darüber nicht ganz im Klaren, scheint aber Node zu bevorzugen.

Bruno:

Craig sagte, er habe die Vorteile von PHP und Node im Web verglichen (häufige Probleme bei der Webentwicklung) und sagte dann, dass JS überall verwendet werde. Erstens vergleichen wir Node.js, nicht JS selbst, und zweitens vergleichen wir die Umgebungen, in denen beide Sprachen ausgeführt werden können. Affen sind stärker als Fische, weil Fische zu dumm sind, um auf Bäume zu klettern, aber sowohl Affen als auch Fische können schwimmen. Vergleichen wir also, wie gut sie abschneiden.

In Webentwicklungsumgebungen gewinnt PHP. Hier sind einige PHP-basierte Desktop-Programmtools – ja, vielleicht werden Sie sie nicht verwenden, aber Sie werden auf jeden Fall diese PHP-basierten Befehlszeilenprogramme verwenden.

James:

Craig und ich sind wieder einer Meinung. Einige der Funktionen, die Node.js so beliebt gemacht haben (Geschwindigkeit, Skalierbarkeit, enge Verbindung zu JSON, geringer Ressourcenbedarf), machen es für viele andere Arten von Anwendungen geeignet, beispielsweise für leistungsstarke IoT-Geräte. Ich denke, wer mag keine Roboter?

Node unterstützt Projekte wie NW.js (eine auf Chromium und Node.js basierende Anwendung), mit der Sie native Apps in HTML und JavaScript schreiben können. Wie aufregend!

Runde 6: Integration

In Runde 6 betrachten wir die Integration von Datenbanken und Treibern. PHP gewinnt hauptsächlich, weil es älter ist.

Bruno:

In Bezug auf die Integration ist es tatsächlich ein Unentschieden. PHP hat den Vorteil des Alters und kann mehr Optionen haben, aber es bedeutet auch, sich um viele veraltete Technologien zu kümmern, wie z MySQL-Erweiterung – Wir Es ist möglich, sie durch ein Upgrade auf PHP7 loszuwerden, aber sie ist seit Jahren nicht mehr verfügbar.

James:

Ich stimme dem auf jeden Fall zu, auch wenn es vage erscheint, und mir gefällt dieses Beispiel: „veraltete, populärere Technologie“. Dies unterstreicht auch einen großen Vorteil von Node – seine native Unterstützung für JSON. JSON ist vielleicht das wichtigste Datenübertragungsformat im Web und die gemeinsame Struktur für die neuesten NoSQL-Datenbanken. Die Verwendung von JSON in JavaScript-Programmen ist sehr einfach, was bedeutet, dass bei der Arbeit mit Node die Daten sehr präzise übertragen werden können, ohne dass eine Formatkonvertierung erforderlich ist. Sie können mit nur einer Syntax (JSON-Format) zwischen Browser, Server und Datenbank wechseln.

Runde 7: Hosting und Bereitstellung

Runde 7 wird sich damit befassen, wie einfach es ist, eine neue Anwendung auf einem Webserver bereitzustellen, und nach Craigs Meinung ist PHP in dieser Hinsicht der klare Gewinner

Bruno:

Bruno schwieg wieder einmal.

James:

Dies ist ein Bereich, an dem Node arbeiten muss. Jedes Unternehmen, das Webhosting anbietet, bietet PHP und MySQL an. Wenn Sie die Ausgabe sehen möchten, müssen Sie nur eine Datei mit der Erweiterung „.php“ erstellen, gültigen Code zwischen schreiben, ihn hochladen und mit einem Browser darauf zugreifen. Der gleiche Ansatz funktioniert jedoch nicht mit Node. Natürlich gibt es viele Optionen für das Node-Hosting, aber sie erfordern mehr Setup und Befehlszeilenzugriff, was für Anfänger unangenehm sein kann. Es besteht kein Zweifel, dass PHP diese Runde gewonnen hat.

Runde 8: Leistung

Runde 8 konzentriert sich auf Geschwindigkeit. Während dies oft auf die Erfahrung und das Engagement des Entwicklungsteams ankommt, stellte Craig fest, dass Node in einigen Bereichen Vorteile hat.

Bruno:

Fehler gibt es zuhauf. Zunächst wird in diesem Artikel die Leistung ausführlich erörtert, wobei der Einfluss der Entwicklererfahrung und des Anwendungstyps auf die Leistung ausgeschlossen wird. Wenn dieser Artikel Sie immer noch nicht davon überzeugt, wie dumm es ist, außerhalb des Kontexts über Leistung zu sprechen, lassen Sie mich meine Sichtweise teilen:

  • PHP bettet einen Multithread-Server ein. Dies ermöglicht die vollständige Umgehung des externen Servers, wird jedoch noch nicht empfohlen. Darüber hinaus gibt es einige ultraschnelle Server (wie Nginx), die den gesamten Prozess des Startens von PHP und des Versendens von Anfragen so schnell machen, dass er ignoriert werden kann.
  • PHPs native asynchrone (nicht blockierende I/O)-Unterstützung wird in PHP7 eingeführt, und ReactPHP hat vor Jahren ein ähnliches Muster implementiert, daher macht das auch keinen Sinn.
  • Der PHP-Einzelanfrage-Lebenszyklusmodus ist die größte Belastung. Wenn Sie ausschließlich Geschwindigkeit anstreben, kann dies tatsächlich immer noch leicht umgangen werden, nicht nur durch Memcached und ähnliche Methoden, wie Craig sagte, sondern auch durch Methoden, die Ajax ähneln. Übrigens – serverseitige JS-Anwendungen sind standardmäßig auch Single-Request. Darüber hinaus ist dieser Lebenszyklus mit einer einzigen Anfrage auch ein Vorteil. Die Anwendung wird für jede Anfrage neu erstellt, wodurch viele Speicherprobleme vermieden werden, Müllspeicher gelöscht wird und sie schlank und sauber bleibt. Wann haben Sie das letzte Mal eine stabile, langlebige und speicherleckfreie Javascript-Anwendung, Front-End oder Back-End, verwendet?

Die Leistungsdiskussion ist und bleibt ein Unentschieden (es sei denn, Sie verwenden Java, in diesem Fall verliert Java)

James:

Node is Es ist bekannt für seine leistungsstarke Laufzeitumgebung mit geringer Latenz und hat seinen eigenen Weg gefunden, in die Code-Stacks einiger Fortune-500-Unternehmen eingebettet zu werden. Dank seines nicht blockierenden I/O-Mechanismus und der Google Chrome V8-Engine-Technologie ist Node mittlerweile zum Synonym für „schnell“ und „skalierbar“ geworden. Mittlerweile gibt es im Internet viele Geschichten darüber, wie Node es Unternehmen ermöglicht, bessere Leistungsverbesserungen zu erzielen und Entwicklern eine höhere Produktivität zu ermöglichen. Ich freue mich, dass Node diese Runde gewonnen hat, verstehe aber auch, dass einige Leute dies in Frage stellen.

Die neunte Runde: ProgrammiererKomplex

In der neunten Runde wird untersucht, wie viel Zuneigung der durchschnittliche Programmierer zu PHP und Node hat. Schließlich denkt er , Knoten gewinnt.

Bruno:

Sie müssen an der falschen Stelle suchen, Craig, die PHP-Community ist unglaublich leidenschaftlich und aktiv, mit über 20 Konferenzen pro Jahr und sehr spannenden Themendiskussionen. So wurde PHP7 von HHVM fertiggestellt.

Außerdem möchte ich sagen, dass ich gespannt bin, an welcher Version Node-Entwickler arbeiten (v0.12.5 wurde bereits geschrieben), auch nach 6 Jahren Entwicklungszeit. Das ist unausgereift und gefährlich (meine Güte, Sie verwenden eine instabile Technologie, lassen Sie Ihr Unternehmen absichtlich zugrunde gehen), außerdem werden einige alte Fehler im Betriebssystem ignoriert und es wird dazu führen, dass einige wichtige Entwickler das Ökosystem der Sprache verlassen.

Einige negative Erfahrungen haben dazu geführt, dass ich Node nicht mag, hauptsächlich wegen npm. Das mag sich in Zukunft ändern, aber im Moment fühle ich mich jedes Mal, wenn ich Node nutze, verängstigt und enttäuscht. Wir haben alle unsere Vorlieben, aber es ist wichtig, objektiv zu bleiben und das richtige Werkzeug für den Job auszuwählen. Aber es ist auch wichtig, anderen zu erlauben, Fehler zu machen, denn jeder macht es im Nachhinein. Hören Sie also nicht auf Craig, hören Sie nicht auf Jim und hören Sie nicht auf mich. Probieren Sie einfach aus, was funktioniert, und finden Sie heraus, was sich gut anfühlt. Letztendlich sind die besten diejenigen, die Ihnen ein produktives Gefühl geben, und nicht diejenigen, die nur etwas Ladezeit sparen.

James:

Node ist sehr beliebt und es gibt viele Innovationen im Bereich Node. Obwohl Leidenschaft nicht objektiv ist, freue ich mich, dass Node diese Runde gewonnen hat.

Runde 10: Die Zukunft

Runde 10 befasst sich mit den Aussichten beider Sprachen. Da beide Sprachen zu diesem Zeitpunkt eine starke Zukunft haben wollen, kam Craig zu dem Schluss, dass diese Runde das Ergebnis ist ist ein Unentschieden.

Bruno:

Bruno muss sich beeilen und mehr Artikel über PHP schreiben und den tollen SitePoint PHP-Kanal pflegen.

James:

James kann es auch kaum erwarten, zu seinem geliebten JavaScript-Kanal zurückzukehren, aber er hat diese Kommentare hinterlassen:

Ein Unentschieden ist für diese Runde fair. Node ist ein aufstrebender Stern, aber es gibt noch viel zu tun, wenn es PHP entthronen will.

Zusammenfassend lässt sich sagen: Wenn ein Hammer Ihr einziges Werkzeug ist, sieht jedes Problem wie ein Nagel aus. Node ist nicht für jede Lösung perfekt geeignet. Natürlich ist es in vielen Fällen sehr sinnvoll, Node nicht zu verwenden. Was Node jedoch kann, kann es extrem gut. Es liegt ganz bei Ihnen, eine fundierte Entscheidung zu treffen und das beste Werkzeug für Ihr Projekt auszuwählen.

Was halten Sie von diesem Thema, nachdem Bruno und James ihre Meinung geäußert haben?

Bruno Skvorc

Bruno, ein kroatischer Programmierer, verfügt über drei Master-Abschlüsse in Informatik, Englisch und Literatur. Er ist PHP-Kolumnist für SitePoint und Entwicklungsevangelist für Diffbot.com. Er meidet veraltete Codes und wählt Projekte aus, die die neueste Technologie verwenden. Er ist auch ein begeisterter Bloggen.

James Hibbard

Ich bin ein Website-Entwickler und lebe derzeit im sonnigen Norden Deutschlands. Ich liebe das Programmieren in JavaScript und Ruby und Sie können mich oft im Javascript-Forum von SitePoint finden. Wenn ich nicht gerade programmiere, laufe ich gerne.

Das Obige stellt 10 vergleichende Herausforderungen zwischen PHP und Nodejs vor, einschließlich aller Aspekte. Ich hoffe, es wird für Freunde hilfreich sein, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn