Se connecter

Informatique

Création de sites web

Sujet : Avis NodeJS ou PHP
1
mycaranille
Niveau 7
22 septembre 2021 à 21:01:51

Bonjour,

Je me permets d'ouvrir ce topic afin d'avoir l'avis de la communauté qui crée des sites web.

Je remarque que sur de nombreux topic le PHP est fortement non recommandé et que NodeJS est plébiscité.

Ayant fait du PHP depuis mes 15 ans (J'en ai 32) je suis d'accord sur le point que PHP était et est encore un langage simple à apprendre.

Mais et il y a un grand mais, celui-ci a énormément évolué surtout depuis PHP 7 avec de la vrai programmation Orientée Objet, la possibilité d'indiquer le type d'une variable et depuis PHP 8 une grosse amélioration des performances avec le JIT.

Ce qui fait que grand nombre de gens, juste pour créer un site vitrine ou petit blog, utilisent NodeJS avec Express (que je ne critique pas attention) alors qu’il serait par moment plus simple et rapide de le faire en PHP.

C'est pour cela que je souhaite avoir l'avis des développeurs PHP et NodeJS pour avoir leur point de vue sur ces deux technologies très différentes.

Pour ma part NodeJS excel dans le temps réel (Jeux vidéo, Tchat en ligne, application web nécessitant du temps réel pour du travail collaboratif), mais pour des site web plus traditionnel je trouve que le PHP à plus de performance dessus (couplé avec un Framework tout comme NodeJS avec Express).

Car j’aimerai refaire un vieux projet en PHP avec un Framework au goût du jour mais j’hésite

Bonne soirée à tous

Pseudo supprimé
Niveau 8
23 septembre 2021 à 13:00:26

PHP est un langage de merde et ce n'est pas parce qu'il est bien moins merdique qu'il ne le fut jadis qu'il n'en reste pas à chier aujourd'hui.

Le type system est cheap au possible, y a énormément de limitations, pas de generics, c'est extrêmement casse couilles de travailler avec des itérateurs, la lib standard est incroyablement pauvre, le support de l'asynchrone est pitoyable, c'est un enfer de travailler avec des raw buffers, avec des streams, avec de l'IO en général. :sarcastic:

mycaranille
Niveau 7
23 septembre 2021 à 14:10:31

Bonjour,

Merci de ton retour, après NodeJS aussi à de gros soucis c'est aussi pour ça que son créateur à quitté NodeJS pour Deno (que j'ai utilisé).

Je pense que Deno a plus d'avenir que NodeJS car la dépendance des paquets dans NPM à plusieurs fois été une grosse source de faille sur des postes.

Si j'étais pas pour PHP je miserai sur Deno au lieu de NodeJS

Quand au PHP pas Asynchrone c'est normal il est pas prévu pour cette façon de travailler

Bien cordialement,

deepblue
Niveau 13
23 septembre 2021 à 14:31:32

Mycaranille, je suis assez d'accord avec toi. J'ajouterais la nécessité de se tourner vers des surcouches du genre TypeScript pour corriger les problème inhérent à javascript et une complexité plus importante de déploiement.

Je mange du Symfony tous les jours donc je ne suis pas 100% objectifs, mais si tu veux refaire ton projet en PHP et qu'en plus de ça, tu as conscience qu'il sera plus adapté selon ta compréhension de l'intérêt de tel ou tel langage selon le contexte, alors fonce.

mycaranille
Niveau 7
23 septembre 2021 à 14:35:21

Le 23 septembre 2021 à 14:31:32 :
Mycaranille, je suis assez d'accord avec toi. J'ajouterais la nécessité de se tourner vers des surcouches du genre TypeScript pour corriger les problème inhérent à javascript et une complexité plus importante de déploiement.

Je mange du Symfony tous les jours donc je ne suis pas 100% objectifs, mais si tu veux refaire ton projet en PHP et qu'en plus de ça, tu as conscience qu'il sera plus adapté selon ta compréhension de l'intérêt de tel ou tel langage selon le contexte, alors fonce.

Bonjour,

Mon projet c'était un RPG textuel sur navigateur Web du style à la Ogame, image et texte, pas de temps réel.

Je l'avais fait en PHP classique sans fonction rien (du mauvais PHP :p) et j'envisage Symfony pour ce projet vieux de 12 ans déjà ^^.

Que faire du NodeJS avec Exress juste pour un site ou tu clique sur attaquer, mon personnage etc... ben c'est un site web classique de base ^^

J'attends juste Symfony 5.4 la futur LTS qui va imposer le typage des retour de fonction avec PHP ^^

Bien cordialement,

Marav
Niveau 28
23 septembre 2021 à 20:40:33

J'appose juste une petite remarque sur ce que tu as dit sur ton topic :

Je remarque que sur de nombreux topic le PHP est fortement non recommandé

Ou ça ?
Je te demandes ça car je vois tous les jours de mes propres yeux des gens conchier sur PHP car " why not " sans jamais aller au bout de leur raisonnement, ils ont entendu du pote du frère de l'arrière tonton qui pensait que Wordpress = bad et voilà ça s'arrête malheureusement là quand tu leur demandes leur avis.
J'irais pas jusqu'à faire de la sociologie bancale mais c'est souvent les mêmes profiles Front / NoSQL / biaisé JS qui reviennent.
Monadent a surement pas ce profil là, mais j'ai bien peur qu'il soit dans l'exception, ou de ceux qui chient sur PHP depuis le début.

Par contre que reddit ou la twittosphère le fasse, en vrai je conseillerai de pas trop s'attarder dessus.
Tu as du recul sur les choses donc ça devrait pas t'apprendre grand chose ce que je te dis, mais on sait jamais.

mycaranille
Niveau 7
23 septembre 2021 à 22:39:52

Le 23 septembre 2021 à 20:40:33 :
J'appose juste une petite remarque sur ce que tu as dit sur ton topic :

Je remarque que sur de nombreux topic le PHP est fortement non recommandé

Ou ça ?
Je te demandes ça car je vois tous les jours de mes propres yeux des gens conchier sur PHP car " why not " sans jamais aller au bout de leur raisonnement, ils ont entendu du pote du frère de l'arrière tonton qui pensait que Wordpress = bad et voilà ça s'arrête malheureusement là quand tu leur demandes leur avis.
J'irais pas jusqu'à faire de la sociologie bancale mais c'est souvent les mêmes profiles Front / NoSQL / biaisé JS qui reviennent.
Monadent a surement pas ce profil là, mais j'ai bien peur qu'il soit dans l'exception, ou de ceux qui chient sur PHP depuis le début.

Par contre que reddit ou la twittosphère le fasse, en vrai je conseillerai de pas trop s'attarder dessus.
Tu as du recul sur les choses donc ça devrait pas t'apprendre grand chose ce que je te dis, mais on sait jamais.

Pas sur ce forum mais plus le forum Développement.
Beaucoup disaient ne pas surtout pas de PHP etc...

Mais merci de vos messages à tous ;)

Pseudo supprimé
Niveau 8
24 septembre 2021 à 07:03:06

Quand au PHP pas Asynchrone c'est normal il est pas prévu pour cette façon de travailler

Le problème c'est que PHP n'est même pas prévu pour ce pour quoi il est utilisé aujourd'hui, à la base c'est qu'un moteur de template qui a grossi comme une gangrène.

Un langage back-end qui supporte pas l'asynchrone c'est quand même con sachant qu'un back-end ça fait rien d'autre qu'appeler des services tiers.

Scorpionnocrag
Niveau 9
24 septembre 2021 à 08:57:05

Bah après j'ai déjà fait du temps réel avec PHP hein... (et je parle pas d'un pooling Ajax dégueulasse).

Pour ce qui est "de base" php à énormément évolué par rapport à la version 1 donc faut un peut évoluer ses remarque vis à vis de lui.

Sinon pour l'auteur, on a le même profil, j'y ai beaucoup réfléchis et bosser aussi bien en php qu'en node ma conclusion UTIME c'est... Tellement balek d'utiliser l'un ou l'autre quand on peut utilisé l'un ou l'autre.
Tout dépend de ses affinité.

Par exemple j'ai déjà fait du machine learning en php par ce que j'aime pas python (oui :hap: ...). Dans les faits, es ce que c'était optimal ? Bouarf. Es ce que je pourrais le réutiliser ?... Bouuuuarf. Mais es ce que j'ai prit du plaisir' à le faire et à apprendre la logique et les algos de cette manière ? Carrément.
Et entre me faire plaisir, ou faire plaisir a d'autre qui ne se servirons jamais de ce que je fais, le choix est fait

mycaranille
Niveau 7
24 septembre 2021 à 12:41:57

Le 24 septembre 2021 à 08:57:05 :
Bah après j'ai déjà fait du temps réel avec PHP hein... (et je parle pas d'un pooling Ajax dégueulasse).

Pour ce qui est "de base" php à énormément évolué par rapport à la version 1 donc faut un peut évoluer ses remarque vis à vis de lui.

Sinon pour l'auteur, on a le même profil, j'y ai beaucoup réfléchis et bosser aussi bien en php qu'en node ma conclusion UTIME c'est... Tellement balek d'utiliser l'un ou l'autre quand on peut utilisé l'un ou l'autre.
Tout dépend de ses affinité.

Par exemple j'ai déjà fait du machine learning en php par ce que j'aime pas python (oui :hap: ...). Dans les faits, es ce que c'était optimal ? Bouarf. Es ce que je pourrais le réutiliser ?... Bouuuuarf. Mais es ce que j'ai prit du plaisir' à le faire et à apprendre la logique et les algos de cette manière ? Carrément.
Et entre me faire plaisir, ou faire plaisir a d'autre qui ne se servirons jamais de ce que je fais, le choix est fait

Merci de ta réponse 👍 car j’ai un autre projet perso pour plus tard ou là j’aimerai faire du temps réel (Tamagoshi en html5) et pour lui node serait parfait.

Mais pour mon rpg textuel avec texte et image et bouton pour alller d’une page à l’autre symfony me suffira largement 👍

Bien cordialement

[Viking]Banni
Niveau 8
24 septembre 2021 à 15:37:16

Le backend ne fais qu'appeler des service tuer ? What ? Ah bon ...

Oui tu peux aussi faites des appel direct en MySQL pour sortir du json ...
Mais j'ai pas vue quelqu'un le faire...

mycaranille
Niveau 7
24 septembre 2021 à 17:22:31

Le 24 septembre 2021 à 15:37:16 :
Le backend ne fais qu'appeler des service tuer ? What ? Ah bon ...

Oui tu peux aussi faites des appel direct en MySQL pour sortir du json ...
Mais j'ai pas vue quelqu'un le faire...

Je pense que c'est un troll c'est bien pour ça que je ne l'ai pas trop écouté, car râler sans donner des exemples ou preuves ça ne fait pas avancer le pourquoi j'ai demandé de l'aide.

En tout cas vous autres qui m'avait bien répondu je vous remercie beaucoup ;)

Je pense faire Symfony et pourquoi pas plus tard NodeJS (Ou Deno)

Après je reste ouvert aux autres avis

Bien cordialement,

feanor_ledev
Niveau 7
26 septembre 2021 à 11:52:17

Honnêtement, prends la technologie avec laquelle tu es le plus à l'aise ! :-)

Les deux technologies sont matures et possèdent les outils nécessaire à ce que tu veux faire. Si tu veux utiliser Node, tu peux utiliser AdonisJs qui est l'équivalent d'un Laravel, mais pour node et qui utilise TypeScript, c'est vachement sympa honnêtement. :(
Et oublie Express, c'est pas top. Si tu comptes juste faire une API, mets toi plutôt sur Fastify, sinon bah Adonis c'est bien aussi pour ça. :oui:

Quant aux plaintes de Monadent, je pense pas que ce ne soit un Troll et il à raison, même si je suis pas conscient de tout ce qu'il dit (j'ai moins de connaissances), pour autant PHP reste fiable et correct et il y a beaucoup de librairies pour faire les choses non native au pire des cas, pis Symfony ou Laravel font les choses bien. :oui:

Si c'était moi je partirais sur NodeJs, avec du TypeScript, j'aime beaucoup l'écosystème.

RANZE_ETO
Niveau 9
04 octobre 2021 à 09:31:07

J'ai pas eu de problème avec ExpressJS, je trouve l'écosystème simple à prendre en main, le système de middleware est bien pensé et permet de respecter le principe DRY.

Après oui il n'a pas de système d'authentification intégré, d'ORM, de gestion de migration mais c'est ce qui le rend très customisable.

feanor_ledev
Niveau 7
04 octobre 2021 à 10:26:50

Le 04 octobre 2021 à 09:31:07 :
J'ai pas eu de problème avec ExpressJS, je trouve l'écosystème simple à prendre en main, le système de middleware est bien pensé et permet de respecter le principe DRY.

Après oui il n'a pas de système d'authentification intégré, d'ORM, de gestion de migration mais c'est ce qui le rend très customisable.

C'est plutôt qu'il a pas mal de vulnérabilités et n'est pas correctement maintenu, comparer à d'autres Framework, et d'ailleurs Express n'est pas le seul dans ce cas de figure dans l'écosystème Node.

RANZE_ETO
Niveau 9
04 octobre 2021 à 10:46:25

Le 04 octobre 2021 à 10:26:50 :

Le 04 octobre 2021 à 09:31:07 :
J'ai pas eu de problème avec ExpressJS, je trouve l'écosystème simple à prendre en main, le système de middleware est bien pensé et permet de respecter le principe DRY.

Après oui il n'a pas de système d'authentification intégré, d'ORM, de gestion de migration mais c'est ce qui le rend très customisable.

C'est plutôt qu'il a pas mal de vulnérabilités et n'est pas correctement maintenu, comparer à d'autres Framework, et d'ailleurs Express n'est pas le seul dans ce cas de figure dans l'écosystème Node.

Bah justement il a moins de vulnérabilité car ce n'est pas une usine à gaz, https://www.cvedetails.com/vulnerability-list/vendor_id-16822/year-2018/opdos-1/Expressjs.html, la seule vulnérabilité trouvé c'est une REDOS dans l'entete X-Method-Override qui a été corrigée depuis

feanor_ledev
Niveau 7
04 octobre 2021 à 13:29:33

Express supporte mal l'async/await, c'est peu maintenu et les versions ne changent pas, c'est lent comparé à Fastify ou Koa, si tu veux un Framework minimaliste autant partir sur des choses activement maintenu et tout autant customisable, comme les deux autres que j'ai cité. (même si je crois que Koa est maintenant plutôt vers le chemin de l'abandon aussi)

Pour la vitesse, on peut donner des arguments comme quoi ça importe peu tant que ça fait ce que l'on veut, oui, mais la différence entre Express et Fastify est minimal, surtout si tu es déjà à l'aise avec l'écosystème Node et que tu connais le JavaScript, donc je vois pas pourquoi démarrer un nouveau projet Node sur quelque chose qui évolue peu alors que tu as exactement pareil techniquement (Customisable, minimaliste, etc), mais de meilleures performances en sortie et moins de problèmes (car c'est maintenu).

Ensuite si c'est pour rapidement construire son application, je vois pas l'intérêt des frameworks minimaliste, autant ne pas avoir à se focaliser sur un milliard de modules externe et partir sur des solutions d'avantages "clé en main". Mais ça, c'est subjectif j'en ai conscience.

Pseudo supprimé
Niveau 8
04 octobre 2021 à 20:42:25

Le 24 septembre 2021 à 15:37:16 :
Le backend ne fais qu'appeler des service tuer ? What ? Ah bon ...

Oui tu peux aussi faites des appel direct en MySQL pour sortir du json ...
Mais j'ai pas vue quelqu'un le faire...

Gné ? :doute: J'ai rien compris

Historiquement le back-end c'est le code spécifique au protocole de communication utilisé (HTTP) qui extrait les informations de la requête pour la transmettre à une partie service qui elle est agnostique du mode de communication employé


app.post("/resized-images", request => {
   // lecture
   const image = extractImage(request)
   const newSize = extractNewSize(request)
   // appel au service tiers
   const resizedImage = resizeImage(image, newSize)
   // écriture
   respondWithImage(request, resizedImage)
})

Ici ce qui appartient au back-end c'est

  • tout le statement app.post(....)
  • la fonction extractImage
  • la fonction extractNewSize
  • la fonction respondWithImage

et le service tiers c'est resizeImage

Le back-end s'occupe uniquement du protocole de communication et pas du code applicatif, tandis que la partie service ne s'occupe quant à elle nullement du protocole de communication mais effectue le "vrai travail" demandé par la requête

Bref, le back-end c'est une très fine couche entre l'utilisateur et la partie service

Avec le temps et grâce aux mauvais cours, notamment sur internet, les gens ont commencé à croire à tort que le back-end serait tout le code côté serveur mais c'est évidemment pas ça et c'est un dévoiement total du sens originel du mot back-end :(

Maintenant évidemment la partie service peut tourner dans le même processus que le back-end, sauf qu'en pratique absolument tout le monde sait que ça ne scale pas. L'exemple typique c'est une base de données. On a besoin de pouvoir appeler des services tiers via de l'ipc.

AchillesHellas
Niveau 10
05 octobre 2021 à 16:11:47

Je n'ai pas de préférence.
J'aime l'environnement Node car j'y suis habitué et ça permet d'avoir un stack entièrement JS back et front. Le système de module est bien foutu donc super.

Mais foncièrement PHP est tout aussi valide, surtout que Wordpress reste très populaire avec son API REST et d'autres gros CMS.

1
Sujet : Avis NodeJS ou PHP
   Retour haut de page
Consulter la version web de cette page