J'ai beaucoup parlé de la façon dont Node.js est génial pour les applications Web en temps réel - des choses qui nécessitent des sockets, des communications Comet, AJAX, etc. Je sais que son modèle basé sur les événements, asynchrone et basé sur les threads est également bon pour la concurrence avec une faible surcharge.
J'ai également vu des didacticiels Node.js pour des applications plus simples, «traditionnelles» et non temps réel (par exemple, l'exemple de blog standard, qui semble être le «Hello World» standard pour les personnes qui apprennent le développement d'applications). Et je sais aussi que node-static vous permet de servir des actifs statiques.
Ma question est: y a-t-il une bonne raison d' éviter Node.js pour les applications Web traditionnelles, comme les petites annonces, les forums, l'exemple de blog susmentionné ou le type d'applications CRUD que vous créez pour les applications métier internes? Juste parce qu'il excelle dans tous les trucs funky en temps réel, cela le contre-indique-t-il pour des utilisations plus staid?
La seule chose à laquelle je peux penser, au départ, est le manque de bibliothèques matures (bien que cela change).
(La raison pour laquelle je demande est que j'envisage d'abandonner PHP pour Node.js, principalement pour surmonter le décalage d'impédance de la commutation entre les langues, mais aussi pour que je puisse réutiliser le code de validation et ainsi de suite. Mon surmoi me recommande de choisir le meilleur outil pour le travail ; cependant, je n'ai pas beaucoup de temps pour apprendre quinze langues et toutes leurs bibliothèques utilisateur juste pour avoir un arsenal complet. Il est également rassurant que Node.js pourrait me donner un chemin d'optimisation plus facile que PHP / Apache à l'avenir quand je devrai commencer à penser à un trafic intense.)
[EDIT] Merci pour les réponses jusqu'à présent, les amis; Je veux juste voir si quelqu'un d'autre interviendra avant de choisir une réponse. La réponse de @Raynos confirme un peu ce que je pense, et les liens des commentateurs ont donné matière à réflexion, mais je veux voir si quelqu'un d'autre a des réponses spécifiques aux nœuds, comme 'N'UTILISEZ PAS NODE POUR LE PROBLÈME X '. (Outre les tâches à processeur élevé, je le sais déjà :-)
la source
Réponses:
Oui, si vous avez N ans sur la plate-forme Web X, vous pouvez clairement développer une application sur la plate-forme X plus rapidement.
Si vous voulez faire Y et que la plateforme X a une solution pré-faite Y qui fait X alors faites-le.
Toutes les raisons génériques pour lesquelles vous devriez utiliser une plateforme plutôt qu'une autre.
Oui, il existe d'autres plates-formes qui vous permettent d'écrire une application générique plus rapidement, Ruby on rails vient à l'esprit.
Cela dit, cependant. J'ai de l'expérience avec le nœud et je ne peux pas prétendre que je choisirais une autre plate-forme que le nœud à moins qu'il ne fasse pour moi une énorme quantité de fonctionnalités.
Fondamentalement, c'est une simple question de
Il n'y a aucune raison solide pour laquelle node.js est une plate-forme gênante (autre que "je déteste le javascript")
la source
Après avoir travaillé avec node pendant quelques semaines, je dirais que oui, c'est très cool. Mais pas nécessairement quelque chose que vous voudriez utiliser pour remplacer vos applications Web courantes par ... ni, imo, ce n'est pas prévu.
N'oubliez pas que le nœud est son propre serveur. Cela introduit des complexités si vous souhaitez exécuter plus que votre seule application node.js. c'est-à-dire, si vous avez plus d'un site / domaine hébergé sur une machine. Ce n'est pas comme une pile LAMP, où vous pouvez avoir une douzaine d'applications PHP pour une demi-douzaine de domaines différents fonctionnant sur le même serveur (sur le port 80, au moins). Il existe des cadres pour les nœuds qui le rendent probablement possible, mais c'est une complexité supplémentaire dont vous n'avez tout simplement pas besoin si vous vous en tenez aux plates-formes Web traditionnelles. (Vous pouvez, bien sûr, également configurer des proxys en plaçant un serveur Web devant le nœud, mais cela annule l'avantage d'utiliser le nœud).
imo, Node est parfait pour travailler en conjonction avec un serveur Web traditionnel. La façon dont j'ai organisé les choses maintenant est de servir les images statiques html / js / via apache, et de gérer les besoins de données «en temps réel» en interrogeant longuement l'application de nœud.
la source
Une bonne raison d'avoir quelques secondes sur le nœud n'est pas technique - c'est génial et étonnant dans ce qu'il fait.
Ce sont des entreprises et en particulier du capital humain, c'est-à-dire des programmeurs qui le savent, combien ils coûtent et leur disponibilité. Ce n'est pas si difficile à apprendre, mais comme avec toute nouvelle technologie, le nombre de personnes qui la connaissent bien (ou qui veulent) est un sous-ensemble des plus grands bassins de travailleurs.
la source
C'est une très bonne question, qu'il faut se poser, pour trop faire avancer l'état de l'art.
J'étais très curieux de savoir (comme Paul d'Aoust) où existent les limites de Node.JS. Malheureusement, de nombreuses réponses sont PLEINES de biais subjectifs et de justification temporairement pertinente.
Je me suis demandé: POUVONS-NOUS FILTRER LES BIENS SUBJECTIFS ET OBTENIR DES RÉPONSES SOLIDES À CETTE QUESTION PERTINENTE?
Les points restants semblent être:
1. NodeJS n'est pas aussi mature que les frameworks traditionnels. Comme le suggère Paul d'Aoust, ce n'est qu'une raison temporairement pertinente, non pas pour l'évitement complet - mais plutôt pour un examen et une diligence raisonnable. Nous devons faire nos devoirs en tant que professionnels du Web, et c'est notre travail de déterminer la meilleure adaptation de la technologie à l'organisation, à leurs besoins, à leur avenir, à l'équipe (et non à nous). La maturité est un besoin de clarification et un jugement d'appétit pour le risque, mais pas d'évitement.
2. NodeJS en tant que serveur proxy. Une sage suggestion, de discussion préalable, qui mérite examen et considération. C'est l'idée d'utiliser Node en corrélation avec les technologies existantes comme modèle de conception de proxy d'interface frontale. Mais aussi, ce n'est pas une raison pour ÉVITER d'utiliser le nœud, mais plutôt une raison pour éviter de l'utiliser en remplacement complet. Opter plutôt pour une approche corollaire.
3. Nœud de débogage. Dans la conversation avec les développeurs de nœuds principaux de Joyent, il y a beaucoup de complications entourant le débogage et la recherche de la cause première des problèmes résultant du noyau (basée sur l'exécution d'un seul thread et l'incapacité de voir dans les threads précédents). Cela vaut la peine d'être considéré et évalué - mais (encore une fois) probablement pas une aversion pour une utilisation courante uniquement des cas marginaux qui peuvent pousser l'enveloppe. Peut-être que vos besoins spécifiques tomberaient dans cette catégorie et peut-être qu'ils ne le seront pas.
4. Ressources humaines. C'est la meilleure raison pour ÉVITER d'utiliser JS sur cette page, et à mon humble avis, c'est une vérité austère et incommode. Cela soulève la question: votre entreprise dispose-t-elle des bons professionnels talentueux pour mener le projet à travers son cycle de vie complet? Sinon, il ne fait aucun doute que vous devez éviter NodeJS. Ou pensez plutôt à A) trouver le bon talent, ou B) Éduquer le talent existant.
Plaintes: Mon observation des plaintes sur JavaScript est que beaucoup résultent plus d'une erreur utilisateur que de défaillances cohérentes de la langue. Nous avons démystifié de nombreuses réclamations contre "The Hate JavaScript Diatribe" et nous continuerons à démystifier encore plus. Des problèmes tels que - la documentation n'est pas assez bonne, elle n'est pas assez sexy, mais les gens ne l'aiment pas, c'est le cancer, c'est le diable, ou elle est trop "sujette aux fautes de frappe" (-CRichardson), est subjective et plaintes biaisées qui doivent être éliminées pour une prise de décision précise de l'entreprise.
En fin de compte, la bonne réponse peut être - il n'y a pas de bonnes raisons pour ÉVITER NodeJS . C'est peut-être pour cela qu'il connaît une croissance, une adoption et une contribution rapides. Mais pour nous tous, la réponse ici est peut-être de continuer à évaluer, rechercher et mieux comprendre NodeJS - et à rechercher des aversions concrètes. Dans le but d'être ouvert à comprendre exactement où Node.JS est immature - nous trouvons exactement où nous devons l'améliorer. Et c'est une bénédiction.
Bonne question. Pour ma part, je reste curieux de voir quelqu'un proposer une meilleure raison d'éviter NodeJS - que celles-ci.
la source
Y a-t-il un avantage à utiliser node over X pour les applications non temps réel:
Avantage d'utiliser X over Node pour les applications non temps réel:
Ma réponse ne sera certainement pas valable en 2015. En 2014, ignorez Node pour les applications Web non temps réel, mais gardez un œil dessus.
Chaque framework web a un point fort. Vous serez heureux pendant que vous l'utilisez pour ce point. Les applications Web non temps réel ne sont pas le point fort des frameworks Web de Node.
la source
Node.js est une plate-forme très populaire et possède de nombreuses fonctionnalités intéressantes bla bla bla, mais l'utilisation d'un outil est une préférence personnelle. J'ai donné quatre fois à Node.js et je n'étais pas content. Voici mes raisons. Veuillez garder à l'esprit que certaines de ces raisons sont dépassées ou simplement personnelles: P
la source
HTTP est sans état, donc il n'y a en fait pas d'application Web non temps réel et donc aucune raison pour laquelle vous ne pouvez pas utiliser le nœud pour tout.
Cela dit, le nœud est mieux adapté à un type particulier d'architecture d'application. PHP est des fichiers html contenant un peu de code. Le nœud est un code contenant éventuellement un peu de code html.
Cela signifie que si votre application est constituée de formulaires html standard sans script côté client, PHP sera plus facile. Node possède des outils de création de modèles, mais évidemment pas aussi mature que quelque chose comme PHP.
Si vous avez beaucoup de scripts côté client et enregistrez les données avec ajax, vous vous retrouvez avec un client html statique appelant des fonctions sur le serveur. C'est exactement ce que le nœud est bon. Bien que ce ne soit pas la façon dont les applications CRUD sont généralement construites, vous pouvez produire quelque chose d'assez agréable avec le bon cadre.
la source