Maison > développement back-end > tutoriel php > Php vs node.js smackdown: droit de réponse

Php vs node.js smackdown: droit de réponse

Lisa Kudrow
Libérer: 2025-02-17 10:28:10
original
744 Les gens l'ont consulté

PHP vs Node.js Smackdown: Right of Reply

PHP vs Node.js Smackdown: Right of Reply

SitePoint a récemment organisé une épreuve de pointe entre PHP et Node.js, et Craig Buckler met ces deux technologies de développement dans l'un des dix défis pour déterminer le vainqueur ultime.

Comme le souligne Craig dans l'article, cette comparaison est toujours controversée. En tant que suivi intéressant, nous avons invité Bruno Škvorc (éditeur PHP pour SitePoint) et James Hibbard (l'un des éditeurs JavaScript de SitePoint) pour commenter chaque tour.

Ce qui suit est leur évaluation ronde par ronde ...


points clés

  • Parce que PHP est simple à configurer et à obtenir des commentaires immédiatement lors de l'exécution de scripts, il est plus facile pour les débutants de commencer et de gagner dans l'étape "débutant".
  • Bien que Node.js soit plus jeune que PHP et que moins de support soit disponible, il est connu pour son écosystème dynamique et en croissance rapide, en particulier dans le domaine des outils de développement chez NPM.
  • JavaScript est utilisé à la fois dans le développement du client et du serveur, ce qui lui donne un avantage dans la familiarité de la syntaxe, bien que les dernières mises à jour de PHP aient considérablement amélioré la cohérence et la robustesse de son langage.
  • Étant donné que PHP est largement pris en charge dans les services gérés, le processus de déploiement est simple et la barrière à l'entrée pour les nouveaux développeurs est faible, il reste le choix préféré pour l'hébergement Web et le déploiement traditionnels.
  • La bataille de performances entre PHP et Node.js montre que les deux peuvent être optimisés pour des performances élevées, mais en raison de la nature non bloquante de Node.js, il a des avantages à gérer les processus simultanés et les applications en temps réel.

Premier tour: démarrage

La première série de défis a été de voir à quelle vitesse vous pouvez créer une page Web "Hello World" dans chaque langue. Cela inclut le temps nécessaire pour configurer l'environnement du serveur.

PHP a remporté la manche dans les estimations de Craig, en partie parce qu'elle est "conceptuellement plus simple" et "moins intimidante pour les nouveaux développeurs".

bruno:

PHP gagne dans "Début" uniquement parce que plus d'hôtes facilitent le démarrage. Il s'agit d'un problème d'adoption, rien d'autre. Si plus d'hôtes contournent la ligne de commande à l'aide du nœud et accédez directement au bouton "Reload Application" dans le panneau de téléchargement de fichiers et de configuration, ils seront égaux. Cependant, la syntaxe réelle de montrer quelque chose à l'écran est beaucoup plus simple en PHP - en particulier pour la programmation des débutants.

James:

Je n'ai pas vu une grande différence entre les deux lors du développement localement. Pour exécuter des scripts PHP dans un navigateur, vous devez installer une sorte de pile de serveur pour exécuter les scripts de nœud, vous devez installer le nœud, et il est préférable d'installer un framework Web, comme Express. Mais, comme le dit Craig, PHP est conceptuellement plus simple. La barrière d'entrée pour le nœud est plus élevée. Il n'y a aucune objection à cela.

Round 2: Aide et support

Le deuxième tour a examiné la difficulté d'obtenir de l'aide et du soutien dans chaque langue. PHP a remporté le tour principalement en raison de sa longue histoire.

bruno:

Bruno reste silencieux à ce sujet

James:

Je suis d'accord avec cela. Node.js est une technologie plus récente, il y a donc moins d'aide disponible pour le moment. Cependant, à mesure que le nœud mûrit, cela deviendra moins important.

Le troisième tour: grammaire linguistique

Le troisième tour a comparé la facilité de compréhension et d'utilisation de la syntaxe de PHP et JavaScript. Craig attribue ce tour à JavaScript.

bruno:

Je suis fortement en désaccord avec cela. Bien que PHP ait quelques bizarreries, beaucoup d'entre elles ont été corrigées récemment, et bon nombre des choses originales seront supprimées dans la dernière version. D'un autre côté, il y a cette situation et cette situation dans le monde JS.

À propos du point 3 ( Votre cerveau n'a pas besoin de changer de modes, car vous pouvez utiliser JS du côté du client et du serveur), je ne suis pas d'accord. L'environnement du serveur est complètement différent de l'environnement client et nécessite de changer de mode cérébral. Il existe également de nouvelles syntaxes que vous ne pouvez pas utiliser dans votre navigateur et vice versa, donc c'est un peu comme la commutation de langage.

point 4 ( Comprendre JS vous donnera envie de l'utiliser plus ) est également un point avec lequel je ne suis pas d'accord. J'utilise JS et PHP depuis des années, et plus j'utilise JS, moins je l'aime - mais c'est purement une préférence personnelle.

James:

j'aime javascript. Je sais qu'il a ses bizarreries, je sais qu'elle a des pièges, mais Ecmascript 2015 corrigera beaucoup de ces problèmes et apportera de nouvelles fonctionnalités passionnantes à la langue. JavaScript est à la fois puissant et flexible et peut s'adapter à de nombreux styles de programmation différents. Par rapport à PHP, j'aime écrire JavaScript. Node mérite la victoire dans ce tour.

quatrième tour: outils de développement

Le quatrième tour a considéré les outils disponibles pour chaque technologie et le nœud a été de justesse en raison du NPM.

bruno:

Bien que le compositeur ait été à l'origine inspiré par le NPM, il est maintenant bien meilleur que NPM, et si deux versions de la même bibliothèque doivent être installées, elle ne cassera pas votre système, contrairement au NPM. Contrairement au NPM, le compositeur peut installer des dépendances récursives, ce que le NPM ne peut tout simplement pas faire - mais il est absolument nécessaire et devrait être la première chose qui vient à l'esprit pour ceux qui commencent à créer un gestionnaire de packages.

NPM a également de très mauvais messages d'erreur que j'aime appeler "Core Developer-Friendly" - seuls ceux qui les écrivent peuvent les comprendre. Enfin, le NPM ne fonctionne pas bien avec Vagrant, vous empêchant efficacement de démarrer correctement - sans oublier qu'ils n'ont pas le désir de suivre l'utilisateur. Il s'agit d'un bug qui existe depuis des années, ce qui le rend essentiellement inutilisable sur Windows - il ne s'agit en aucun cas d'une base d'utilisateurs triviale. PHP a également ses propres erreurs stupides, mais ces erreurs n'aliéneront pas les utilisateurs de l'ensemble du système d'exploitation pendant des années.

Accordé, le compositeur n'est pas regroupé de PHP, mais je ne pense pas que cela devrait le faire. Un gestionnaire de packages qui est en fait une application distincte ne doit pas être partiel. Si quelqu'un, un jour, faisait vraiment un bon Gestionnaire de packages pour Node, alors le remplacer par le gestionnaire de package actuel serait un enfer bureaucratique, sans parler de faire passer les gens. De plus, l'installer n'est vraiment qu'une ligne de commandes de terminaux ou le téléchargement d'un programme d'installation.

L'énoncé selon lequel le compositeur a moins d'impact est complètement faux. Depuis le développement de Composer, il a affecté tous les nouveaux développeurs PHP qui ont rejoint les rangs de PHP, et la plupart des grands développeurs qui doivent l'ajouter à leur flux de travail actuel. Ce n'est pas parce qu'il y avait beaucoup d'utilisateurs de PHP avant l'apparition du compositeur, cela ne signifie pas qu'il a un impact plus faible. Cela a eu un impact énorme depuis sa création. Les déclarations absolues telles que «moins d'impact sur la communauté» ne doivent pas être faites sans base factuelle.

Je ne peux pas contester le fait que la plupart des développeurs PHP finissent par installer un nœud, ce qui est vrai. Malheureusement, de nombreux excellents outils sont préférés pour se développer avec Node, mais je veux toujours un environnement de développement sans nœud en raison de projets comme BowerPhP.

James:

Je suis très heureux que Node ait remporté ce tour.

J'aime NPM. Il est facile à installer, facile à utiliser et peut répondre à presque tous les besoins, avec des milliers de packages disponibles. J'aime aussi que le NPM vous permet de choisir une installation globale et un package d'installation local (par opposition à des langues comme Ruby, où les gemmes sont généralement installées avec votre version Ruby). L'outil est également très bon. Des outils comme Bower et Grunt occupent une place régulière dans mon flux de travail et ont augmenté ma productivité plusieurs fois.

Il convient également de mentionner que NPM V3 est en version bêta. Cela résout bon nombre des problèmes soulevés par Bruno, tels que les erreurs de méthode Node_Modules imbriquées.

Introduction à l'ensemble de l'épreuve de pointe:

Les développeurs PHP peuvent éventuellement vouloir / besoin d'installer Node.js. Sinon, ce n'est pas le cas.

cinquième tour: Environnement

Le cinquième tour implique l'emplacement d'utilisation et de déploiement de la technologie, ainsi que les plates-formes et les écosystèmes pris en charge. Craig ne montre pas clairement ce qu'il a dit à propos du tour, mais cela ressemble à une défaite écrasante pour Node.

bruno:

Craig dit qu'il comparera les avantages Web de PHP et Node (défis généraux de développement Web), puis dit que JS est partout. Tout d'abord, nous comparons Node.js au lieu de JS lui-même. Deuxièmement, nous comparons le langage et les environnements qu'ils peuvent exécuter. Il est tout simplement stupide de dire que les singes sont meilleurs que les poissons parce que les poissons ne peuvent pas grimper les arbres. Mais les singes et les poissons peuvent nager, alors comparons combien ils nagent.

PHP gagne facilement dans un environnement de développement Web. Il existe des outils dans PHP pour le développement de bureau - oui, en effet, vous ne les utilisez probablement pas. Mais vous pouvez certainement utiliser l'aspect de la ligne de commande de PHP.

James:

De même, je suis d'accord avec Craig. Beaucoup de fonctionnalités qui rendent Node.js si populaire (vitesse, évolutivité, affinité avec JSON, faible utilisation des ressources) le rendent également très adapté à de nombreux autres types d'applications, tels que l'alimentation des appareils IoT. Je veux dire, qui n'aime pas les robots?

Le nœud

a également donné naissance à des projets comme NW.JS (exécution des applications basée sur Chromium et Node.js), qui vous permet d'écrire des applications natives dans HTML et JavaScript. Une période passionnante!

Round six: intégration

Le sixième tour examine l'intégration avec les bases de données et les pilotes, et PHP gagne principalement en raison de sa longue histoire.

bruno:

L'intégration est un tirage. PHP a un avantage de l'âge dans ce domaine, offrant plus d'options, mais cela signifie également qu'il souffre de certaines intégrations sérieusement dépassées comme l'extension MySQL - nous n'avons réussi qu'à nous en débarrasser dans PHP7, mais il n'a pas été en mesure de le faire Pour les années, utilisez.

James:

Je ne suis pas sûr d'être d'accord avec cela. Le libellé tout au long de la ronde semble vague, et j'espère qu'il y a un exemple de "technologie plus ancienne et moins populaire". Cela peut également être une excellente occasion de souligner un grand avantage du nœud - il utilise JSON. JSON est probablement le format d'échange de données le plus important sur le Web et est également un langage commun pour interagir avec de nombreuses dernières bases de données NOSQL. JSON est parfait pour les programmes JavaScript, ce qui signifie que lorsque vous utilisez le nœud, les données se déroulent en douceur entre les couches sans reformater. Vous pouvez utiliser une syntaxe de votre navigateur vers votre serveur vers votre base de données. Round 7: Hébergement et déploiement

Le septième tour examine la difficulté de déployer de nouvelles applications aux serveurs Web en temps réel, et à la vue de Craig, PHP est un gagnant clair à cet égard.

bruno:

Encore une fois, Bruno est resté silencieux, rien à ajouter

James:

C'est un domaine que le nœud doit rattraper. Chaque société d'économie d'hébergement Web propose un package PHP contenant MySQL. Pour voir une sorte de sortie, vous créez simplement un fichier avec l'extension .php, mettez des instructions valides entre? & Lt; et? & Gt;, téléchargez le fichier et pointez-le vers votre navigateur. Ce n'est pas le cas avec le nœud. Bien sûr, il existe de nombreuses options d'hébergement de nœuds, mais ils nécessitent toujours plus de paramètres et d'accès à la ligne de commande, qui peuvent être dissuadés par les débutants. PHP a remporté le tour sans aucun doute.

Floor 8: Performance

Le huitième tour se concentre sur la vitesse; bien que cela dépend généralement de l'expérience et de l'effort de l'équipe de développement, Craig souligne les avantages du nœud de plusieurs manières.

bruno:

Les malentendus abondent. Tout d'abord, ce post rend toutes les discussions de performance inutiles. Tous les gains / pertes de performance dépendent entièrement de l'expérience du développeur et du type d'application. Mais même si ce message ne vous convainc pas que les discussions sur les performances sont stupides sans contexte, voici quelques-uns de mes propres arguments:

  • PHP obtient un serveur multi-thread intégré. Cela permettra de contourner les serveurs externes, mais n'est pas recommandé (pas encore). Il existe également des serveurs super rapides, comme Nginx, qui rendent l'ensemble du processus de démarrage du PHP et de la déléguation des demandes moins évidents.
  • Des projets tels que HHVM et Appserver ajoutent de puissants aspects asynchrones et multithreading à PHP, et PHP7 lui-même a également reçu des mises à niveau puissantes dans le département.
  • Le cycle de vie de l'application unique de PHP est le plus grand fardeau, oui, si vous recherchez des vitesses brutes; mais cela peut également être facilement contourné, non seulement en utilisant des solutions similaires à celles Memcached et Craig, mais aussi utiliser Ajax et d'autres méthodes . Soit dit en passant - les applications JS côté serveur sont également demandées par défaut. Plus important encore - ce cycle de vie de demande unique est également un avantage car il reconstruit l'application à chaque fois qu'il est utilisé, évitant ainsi les problèmes de mémoire, nettoyant les ordures et le gardant rationalisé et propre. À quand remonte la dernière fois que vous avez utilisé une application JavaScript qui était stable, à long terme et sans mémoire sur le backend ou le frontend?

La discussion sur les performances est et sera toujours un tirage. (Sauf si vous utilisez Java - alors Java perd toujours !;))

James:

Le nœud

est présenté comme le runtime préféré pour les applications à haute performance à faible latence et a entré la pile de code de plusieurs sociétés du Fortune 500. Il est devenu synonyme de "rapide" et "évolutif" grâce à son mécanisme d'E / S non bloquant et à Google Chrome V8 Engine Technology. Il existe de nombreuses histoires en ligne sur la façon dont Node apporte des gains de performances significatifs aux entreprises et améliore la productivité des développeurs. Je suis content de voir ce nœud ronde gagner, mais je comprends que c'est un point controversé.

Round Ninth: l'enthousiasme du programmeur

Le neuvième tour examine à quel point Craig a montré l'enthousiasme aux développeurs actuellement sur PHP et Node, et à son avis, Node gagne facilement.

bruno:

Craig, vous devez regarder au mauvais endroit. La communauté PHP est très enthousiaste et très active. Il y a plus de 20 grandes conférences chaque année et des sujets incroyables sont abordés. Avec l'émergence de HHVM et PHP7, le pas de l'eau est terminé.

De plus, je voudrais dire qu'après 6 ans de développement, les développeurs de Node n'ont toujours pas appris comment fonctionne le numéro de version (V0.12.5 au moment de la rédaction), ce qui est étrange. Cet "agissant désespéré" en toute sécurité "(oh, vous avez utilisé des choses instables, votre faute a provoqué une écrasement de votre entreprise), couplée à l'erreur ancienne critique mais négligée, aliénant les utilisateurs de l'ensemble du groupe de systèmes d'exploitation, qui empêchera tout développeur sérieux de l'écosystème du langage de programmation.

Je n'aime pas le nœud. Mon averse est basée sur des expériences négatives et tourne principalement autour de NPM. Cela peut changer à l'avenir, mais pour l'instant, chaque fois que je dois utiliser le nœud de quelque manière que ce soit, je suis rempli de peur et de désespoir. Nous avons tous nos propres préférences, mais il est important de rester objectif et de choisir les bons outils pour le travail. Mais il est également important d'admettre que parfois choisir le bon outil signifie choisir d'abord le mauvais outil, car vous ne savez pas encore . Alors n'écoutez pas Craig. N'écoutez pas Jim. Ne m'écoutez pas. Essayez-le - voyez ce qui fonctionne, découvrez ce qui fait du bien, puis utilisez-le. En fin de compte, l'environnement qui vous fait vous sentir efficace et grand est le meilleur environnement, plutôt que de vous donner un temps de chargement plus court en millisecondes.

James:

Le nœud

est très populaire. Maintenant, Nodeland innove beaucoup. Bien que l'enthousiasme soit subjectif, je suis content que Node ait remporté la ronde.

Round 10: Future

Le dixième tour examine l'avenir des deux langues, et Craig déclare ce tirage au sort, car les deux langues semblent avoir de brillantes perspectives à ce stade.

bruno:

Bruno a dû se dépêcher et écrire plus de code PHP et modifier des articles PHP incroyables pour SitePoint

James:

James est également impatient de retourner dans sa chaîne JavaScript bien-aimée, mais il propose ces mots d'adieu:

Le tirage est un résultat équitable pour ce tour. Node est une étoile montante, mais il faudra des choses énormes pour remplacer PHP.

Dans l'ensemble, si votre seul outil est un marteau, alors chaque question ressemble à un clou. Le nœud n'est pas le choix parfait pour tous les scénarios, et en fait, il est logique de ne pas l'utiliser dans de nombreux cas. Mais, quel nœud est bon, il fait un très bon travail. C'est à vous de faire un choix éclairé et de choisir le meilleur outil pour votre travail.


Alors, maintenant que Bruno et James ont exprimé leurs opinions, qu'avez-vous à dire?

FAQ (FAQ) sur PHP et Node.js

Quelle est la principale différence entre PHP et Node.js en termes de performances?

php et node.js ont des caractéristiques de performance différentes en raison de leurs différentes architectures sous-jacentes. PHP est un langage de synchronisation par défaut, ce qui signifie qu'il effectue une opération à la fois, en attendant que chaque opération se termine avant de continuer avec l'opération suivante. Cela peut dégrader les performances lors de la gestion d'un grand nombre d'opérations d'E / S. Node.js, en revanche, est construit sur JavaScript, qui est essentiellement asynchrone et non bloquant. Cela signifie qu'il peut gérer plusieurs opérations simultanément sans attendre qu'une opération se termine avant de démarrer une autre, améliorant potentiellement les performances, en particulier dans les applications avec un grand nombre d'opérations d'E / S.

Comment la courbe d'apprentissage de PHP se compare-t-elle à Node.js?

Parce que la syntaxe PHP est simple et possède des ressources en ligne abondantes, elle est souvent considérée comme plus facile à apprendre par les débutants. Bien que Node.js ne soit pas compliqué, il nécessite une compréhension solide de la programmation JavaScript et asynchrone, ce qui peut être difficile pour les débutants. Cependant, si vous connaissez déjà JavaScript, vous pouvez trouver Node.js plus facile à démarrer.

Pour les applications en temps réel, PHP ou Node.js est-il plus approprié?

Node.js est généralement mieux adapté aux applications en temps réel telles que les applications de chat, les outils de collaboration ou les jeux multijoueurs. En effet, il a une architecture non bloquante axée sur les événements qui lui permet de gérer plusieurs connexions simultanées et a un débit élevé, ce qui est essentiel pour les applications en temps réel.

Comment comparer PHP et Node.js en termes d'évolutivité?

PHP et Node.js peuvent être étendus pour prendre en charge les grandes applications, mais elles évoluent de différentes manières. PHP est évolutif verticalement, ce qui signifie que vous pouvez augmenter sa capacité en ajoutant du matériel plus puissant. Node.js, en revanche, évolue horizontalement en ajoutant plus de machines au pool de serveurs. Node.js dispose également d'un cluster de module intégré, qui vous permet de tirer parti d'un système multi-core pour créer des processus enfants qui partagent des ports de serveur.

En quoi sont-ils différents en termes de soutien communautaire pour PHP et Node.js?

PHP et Node.js ont une communauté énorme et active qui contribue et soutient son développement. PHP a une longue histoire et dispose d'un grand nombre de ressources, de bibliothèques et de cadres. Node.js, bien que nouveau, se développe rapidement et est soutenu par les grandes entreprises telles que Google et Microsoft. Les deux communautés développent activement et maintiennent divers projets open source.

Comment comparer PHP et Node.js en termes de sécurité?

PHP et Node.js ont des fonctionnalités de sécurité puissantes, mais la sécurité d'une application dépend généralement davantage des connaissances et de la pratique du développeur que de la langue elle-même. PHP existe plus longtemps et dispose d'une base d'utilisateurs plus importante, ce qui signifie qu'il a été exposé à plus de menaces de sécurité et a donc développé plus de fonctionnalités de sécurité et de meilleures pratiques. Node.js est relativement nouveau, avec moins de vulnérabilités connues, mais aussi moins de fonctionnalités de sécurité intégrées.

Pour le référencement, PHP ou Node.js est-il meilleur?

PHP et Node.js peuvent être optimisés pour le référencement. PHP est utilisé depuis de nombreuses années pour créer des sites Web dynamiques facilement indexés par les moteurs de recherche. Node.js, en revanche, peut être utilisé pour créer des applications évolutives rapides qui peuvent améliorer l'expérience utilisateur et les performances du site Web, qui sont toutes deux des facteurs importants du référencement.

Comment comparer PHP et Node.js en termes de prise en charge de la base de données?

PHP prend en charge une large gamme de bases de données, notamment MySQL, PostgreSQL et SQLite. Il prend également en charge les bases de données NoSQL telles que MongoDB via des bibliothèques tierces. D'un autre côté, Node.js convient particulièrement aux bases de données NoSQL telles que MongoDB en raison de son traitement de données basé sur JSON. Il prend également en charge les bases de données relationnelles via des modules tiers.

Pour le rendu côté serveur, PHP ou Node.js est-il plus adapté?

PHP est conçu pour le rendu côté serveur et est utilisé à cette fin depuis de nombreuses années. D'un autre côté, Node.js peut également effectuer un rendu côté serveur, en particulier lorsqu'il est utilisé avec des frameworks tels que Express.js. Cependant, Node.js est souvent utilisé pour construire des API et des services backend, et le frontend est géré par des technologies distinctes.

Comment comparer PHP et Node.js en termes de vitesse de développement?

La vitesse de développement peut varier en fonction de la complexité du projet et de la familiarité du développeur avec la langue. PHP peut obtenir un développement rapide avec sa syntaxe simple et ses riches fonctions intégrées. Node.js permet également un développement rapide, en particulier dans les applications ou services en temps réel avec un grand nombre d'opérations d'E / S, grâce à son architecture axée sur les événements et à des E / S non bloquantes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal