Nodejs: où ou comment écrire une logique métier compliquée?

Récemment, je me suis présenté à node.JS et frais forfaits comme express et jade. J'ai quelques questions qui frappent constamment à ma porte:

Si je choisis le nœud.js pour construire mon prochain site web, j'utiliserai JavaScript pour écrire ma logique compliquée côté serveur? mais je ne pense pas que vous puissiez comparer JavaScript avec Java ou Python pour écrire du code côté serveur car ils ont un si vaste océan de bibliothèques. Est le nœud.js vraiment fait pour elle? ou j'ai raté quelque chose?

Puis-je appeler Java ou Python à partir de nœud.js?

30
demandé sur agf 2011-08-12 02:44:43

6 réponses

Pas tout à fait sûr de ce que la plupart de ces gens parlent.

Un "vaste océan de bibliothèques" est quelque chose sur lequel la communauté travaille activement. Vérifiez ceci: http://search.npmjs.org/#/_analytics -- il y a eu 8 paquets publiés hier

Cela ne va pas résoudre la conception de votre logiciel pour vous. En ce qui concerne où et comment écrire la logique métier, beaucoup d'entre nous embrassent mvc ou mvvm ou quelque chose de proche. Si vous construisez une application et aimez comment Rubyists (pour exemple), structurez leur code vous pourriez regarder faire quelque chose comme ça - aint personne ne va vous dire comment structurer votre code.

Vérifier https://github.com/joyent/node/wiki/modules

Quelques-unes des bibliothèques les plus populaires pour faire le jour au jour:

Il y a aussi une foule D'ORM là-bas, si c'est votre sac. Des choses comme http://mongoosejs.com/, http://sequelizejs.com/ et amis

Le développement piloté par les tests est au cœur du nœud. Il y a 15 packages TDD différents à choisir parmi cette gamme, de l'analyse complète de la couverture de code aux modules assert personnalisés.

Dire que tous les modules sont incomplets est idiot. Il y a un groupe incroyablement dévoué de personnes qui construisent et maintiennent des tonnes de travail open-source dans cette communauté tous les jours.

Il peut y avoir des raisons de passer sur node, mais ce n'est pas pour une communauté inactive ou un manque de bibliothèques.

26
répondu Josh 2011-08-13 05:54:59

Ryan n'a pas commencé avec JavaScript. Une grande partie de la raison pour laquelle Node a été créé en JavaScript est que JavaScript manquait de vastes océans de bibliothèques.

Ces vastes océans de bibliothèques sont presque toutes écrites en code de blocage.

Pour profiter pleinement du nœud.js vous devez vous limiter aux bibliothèques non bloquantes. Ce qui signifie que vous devrez peut-être écrire des bibliothèques pour terminer votre projet dans Node.js.

3
répondu generalhenry 2011-08-11 23:52:26

Je dirais que vous avez manqué quelque chose - plus précisément, le but principal de Node.js, c'est-à-dire le modèle d'E/S asynchrone.

J'ai commencé un petit projet pour tester le nœud.js-comment il "se sent" et comment programmer dessus. Je suis devenu impressionné par la facilité de travailler dans un tel écosystème: Node.le code js est facile à écrire (bien que son paradigme asynchrone ne soit pas si simple pour le programmeur conventionnel), les bibliothèques sont faciles à construire, etc. etc. Même npm est incroyablement facile: je viens de trouver la façon la plus simple de fournir votre propre code en tant que Bibliothèque est d'en faire un paquet public - et c'est absurdement facile!

Cependant, il n'y a pas beaucoup de bons outils pour travailler avec Node.js. Peut-être parce qu'il est trop facile de faire quoi que ce soit, la plupart des bibliothèques sont des solutions partiellement implémentées et non documentées.

Notez également que la différence pertinente du nœud.js n'est pas le langage JavaScript, mais le modèle d'E/S asynchrone. C'est l'aspect le plus intéressant de Nœud.js, mais le style de programmation asynchrone n'est pas aussi bien testé que le mode conventionnel de développement web. Peut-être que c'est vraiment la merveille qui est vantée - ou peut-être, il n'est pas aussi bon comme promis.

Même dans le cas où cela est payant, aurez-vous assez de développeurs pour maintenir une telle base de code (au moins encore) inhabituelle? Si vous pouvez obtenir beaucoup d'avantages du "mode de vie" asynchrone du nœud.js, vous pouvez utiliser des langages et des frameworks plus consolidés, tels que Twisted pour Python (qui est mon languabe préféré, alors faites attention à mon opinion:)). Il peut y avoir quelque chose comme ça pour Java, aussi. Quoi qu'il en soit, je soupçonne que vous n'avez pas beaucoup d'intérêt pour ce modèle pour l'instant, puisque votre question se concentre plus sur les langages que dans le paradigme de programmation, donc Node.js n'a pas grand-chose à vous offrir de toute façon.

Donc... Non, Je ne développerais pas quelque chose de professonaly dans le nœud.js pour l'instant, bien que je pense qu'il est à la fois amusant et instructif d'étudier. Vous pouvez le faire, cependant-ne le faites pas sans avoir à l'esprit le but principal du nœud.js: asynchrone-IO, programmation axée sur les événements. Si c'est ce que vous voulez, noeud.js est une bonne alternative.

3
répondu brandizzi 2011-08-23 20:05:40

Bien sûr, vous pouvez utiliser python, php, c++ ou d'autres technologies avec nodejs 'cuz nœud peut l'exécuter en tant que processus enfant. Nodejs donner votre liberté d'utiliser toute technologie que vous voulez à l'intérieur de lui-même. Vous pouvez utiliser ce que vous voulez en combinant les programmes les plus performants.

2
répondu Pasha Rumkin 2011-08-12 00:13:51

Je pense que vous serez surpris par la quantité de travail que vous pouvez faire en JavaScript via Node.js. Il y a un tas de bibliothèques disponibles pour Node et d'autres sont en cours d'écriture tout le temps. En outre, extensions natives sont également disponibles pour les moments où vous pourriez avoir besoin de descendre à un niveau inférieur.

Si vous pensez qu'il y a un écart où Node ne sera pas en mesure de fournir votre logique métier, jetez un oeil autour de NPM ou donnez à Google un serch rapide pour voir si quelqu'un a déjà résolu votre problème.

2
répondu Michelle Tilley 2011-08-12 02:51:29

Il y a certaines choses que JavaScript ne peut tout simplement pas faire. Si vous rencontrez ces nœuds pourraient ne pas être le meilleur choix pour votre application. Cependant, vous pouvez probablement accomplir la plupart de ce dont vous avez besoin.

En ce qui concerne l'API étant limitée, je vous suggère de jeter un oeil à npm et toutes les bibliothèques dans son référentiel. Plus précisément ceux comme underscore.js . Beaucoup visent à combler les lacunes de ce qui manque à JavaScript natif par rapport aux autres langages.

0
répondu sym3tri 2011-08-12 01:10:56