2011-05-20 2 views
11

Je joue avec node.js depuis un moment, et j'ai vraiment compris à quel point c'est génial. Cependant, une chose que j'ai du mal à comprendre, c'est comment je devrais structurer mon code pour qu'il puisse être maintenu. La plupart des tutoriels que j'ai vu sur Internet ont tous les JS dans un seul fichier, ce qui n'est pas une bonne façon de gérer votre code. Je suis conscient qu'il n'existe pas de "classe" en javascript, mais existe-t-il un moyen (standard) pour formater mon code pour la maintenabilité de la même manière que je structurerais un projet PHP, par exemple ?Comment structurer le code de nodejs correctement

Répondre

6

Autant que je sache, vous pouvez utiliser require pour inclure vos propres fichiers js (contenant des méthodes exportées) en utilisant:

var req = require('./someJsFile'); 

Dans someJsFile.js vous pouvez exporter des méthodes comme celle-ci:

exports.someMethod = function(){ /*...*/ }; 

Et dans votre fichier principal vous pouvez adresser une telle méthode en utilisant req.someMethod()

Ainsi, vous pouvez diviser votre code en différents fichiers nt, que vous require à partir d'un certain fichier js central.

Here is an article expliquant Node.js require

2

Après avoir appris comment exiger que les travaux dans Node.js (assez simple), comme le suggère Kooilnc

Vous pouvez jeter un oeil au code source des modules disponibles pour Node.js:

https://github.com/joyent/node/wiki/modules

Si vous prévoyez d'utiliser express (un des le cadre de Node.js plus robuste là-bas) pour développer votre premier noeud applications, vous pouvez jeter un oeil à ses échantillons spécifiques ici:

https://github.com/visionmedia/express/tree/master/examples (il y a aussi un échantillon mvc)

12

J'ajoute que dans la mesure où la maintenabilité va, je crois que le style typique de profondément nichant Les rappels utilisant des fermetures sont le plus grand obstacle à la compréhensibilité des programmes Node, tout en étant complètement inutile.

Pour tous:

a.doSomething(val, function(err,result){ 
    b.doSomethingElse(result,function(err,res){ 
    ... 
    }); 
}); 

Il y a toujours un:

a.doSomething(val, onDoSomething); 

function onDoSomething(err,res) { 
    ... 
} 

Ma règle de base est: une nouvelle fonction de rappel non-fermeture est nécessaire pour quoi que ce soit sur trois niveaux d'imbrication.

(Node.js a vraiment besoin d'un manuel de style.)

+2

Je vous appuie totalement sur le manuel de style. Je vais le suggérer sur la mailinglist! –

Questions connexes