Comment organiser de grandes Node.js projets
Quelles sont les bonnes façons d'organiser de grands Node.js les projets?
Par exemple, une application faisant usage des deux express.js et de la prise.io? Cela inclut à la fois l'application logique de la structure ainsi que le système de fichiers.
Actuellement, je suis la recherche de moi-même en train de bousculer une tonne de code dans un seul maître du fichier js et plaçant le code en un géant mondial de l'objet, et il se sent coquine.
- Eu le temps de lire un livre?
- Je pourrais avoir à acheter ce livre, merci!
- Google "Modules JavaScript" ou "Modulaire JavaScript" 🙂
- J'ai lu le livre suggéré par Straseus, et il donne beaucoup de bons conseils et de l'analyse, mais je crains que pas beaucoup de transferts bien à la structuration d'une Node.js application avec express. PuerkitoBio la réponse ci-dessous des liens vers quelques suggestions de bons points de départ de la structure du fichier; j'ai l'intention de construire que sur la structure si nécessaire.
Vous devez vous connecter pour publier un commentaire.
Débutants Exemple
J'aime à l'origine contrôlées de @david-ellis et vous devez l'étudier en profondeur pour comprendre que c'est une bonne idée. Cependant, j'aurais aimé plus simplifié pour les débutants qui veulent voir un simple exemple. Voici ce que j'aurais aimé avoir vu quelqu'un me montrer.
Donnons un scénario typique où vous utilisez express et que vous avez beaucoup de routes figurant sur votre app.js fichier. Son contenu devrait ressembler à quelque chose comme ceci:
app.js
Vous pouvez imaginer si vous avez 50 itinéraires, ce fichier peut être tout à fait hors de la main. Il serait bon de supprimer certains de ces interruptions de la app.js fichier.
Ce que vous voulez faire est de créer un "contrôleurs" dans le dossier de votre application de sorte que votre structure serait maintenant ressembler à ceci:
Créer un fichier dans "/controllers" nommé "index.js" puis placez le code suivant.
/controllers/index.js
Couper et coller votre itinéraire inscriptions à partir de votre "app.js" fichier et le placer dans le "/controllers/index.js" fichier.
Sur votre app.js fichier, supprimez votre parcours et à la place de faire le suivant.
app.js
Maintenant, si vous voulez avoir votre "/controllers/index.js" fichier peut également être scindée, nous allons ajouter un exemple de plus de sorte que vous pouvez voir comment Node.js vraiment agit comme une Poupée russe dans la façon dont son code peut être organisé.
Dans "/controllers" ajouter un fichier "accounts.js" et placer celui-ci en son sein.
/controllers/account.js
Maintenant dans votre "/controllers/index.js fichier, mettre une référence à "account.js"
/controllers/index.js
Comme vous pouvez l'imaginer, vous pouvez garder la rupture des choses en plus petits et de plus petites pièces et mettre plus de dossiers dans des dossiers et de la référence à "exiger" si vous le souhaitez. Vous pouvez utiliser la même notion de "/lib" ou les fichiers de bibliothèque. "node_modules" est déjà cela.
Qui est juste une des nombreuses raisons node.js est très agréable à programmer avec.
Gérable Express 4 exemple de Routage
Voici un autre post, j'ai répondu à propos d'express 4 voies qui se rapporte à cela.
Reste avec Express.js imbriquée routeur
<link>
à quelque chose comme/example/path
lorsqu'un utilisateur entre/example/path/
dans la barre d'adresse (ou l'inverse).Je vous recommande de penser en termes de bibliothèques.
npm
est un excellent outil pour l'accaparement des bibliothèques, et de votre code probablement le fait tout le temps. Alors pourquoi ne pas regarder ce que vous écrivez, et pense que "ce que les parties de cette je préfère êtrerequire
-ing une bibliothèque pour ce faire, à la place?Ensuite, vous pouvez d'abord la recherche d'une telle bibliothèque, et vous avez soudainement coupé vers le bas sur le code que vous devez écrire. Si vous ne pouvez pas trouver une telle bibliothèque, vous pouvez écrire votre propre, et ensuite décider si oui ou non vous souhaitez publier sous la forme d'une bibliothèque open source, ou de le garder fermé.
Si vous avez, disons, assez complexe de l'objet que vous souhaitez utiliser dans votre code, mais pense que c'est trop personnalisé pour le site particulier, vous êtes en train de travailler pour être admissible à titre de bibliothèque, n'oubliez pas que vous pouvez toujours
var myObj = require('./relative/path/to/javascript/file');
et déplacez-le dans son propre fichier pour travailler avec, vous permettant d'organiser votre code dans un mode similaire au C/C++/Java code, ainsi.Mais encore une fois, le problème a été résolu dans aussi générique que possible, est préférable, car il encourage la réutilisation de code et test mieux de votre code (surtout si c'est open source et d'autres pourraient peut-être l'utiliser).
J'ai écrit un blog post sur ce sujet il y a quelques jours, et bien que l'article est en français, j'ai mis en place un Dépôt GitHub (en anglais) pour montrer un exemple de fonctionnement de la structure que j'utilise.
Évidemment, il n'y a pas de réponse définitive à cette question, mais il est intéressant de voir ce que les autres font, et je suis preneuse d'autres avis sur le sujet (qui était aussi le discuté ici, où vous pouvez voir un résumé de ce que je propose).
Semblable à l'autre blog, j'ai écrit un spécifiquement sur l'organisation de
Express
applications. C'est la méthode que j'ai utilisé pendant environ un an et demi. Fondamentalement, organiser vos applications autour de votre entités de données ou tous autres éléments de base. Lieu logique pour chacun de ces éléments dans leurs propres répertoires. J'ai essayé d'emprunter beaucoup de Python.http://rycole.com/2013/01/28/organizing-nodejs-express.html
Ses Articles ne sont plus en ligne, mais Eric Satterwhite de nœud de la série a recommandé une structure comme indiqué ci-dessous.
Avec le
packages/
dossier tournant dans votre source pour la modularité.Si vous êtes un débutant dans ce domaine, je vous suggère de prendre un regard sur les projets existants qui sont aimés par les développeurs. Certains d'entre eux sont:
Sails.js - 18k étoiles. Vous pouvez prendre un coup d'oeil la façon dont ils ont organisé APPLICATION de la structure sur le lien que j'ai fourni. Un grand site web a une explication pour chaque dossier dans la structure.
Express.js générateur - 800 étoiles. Il y a le grand et le modèle simple de commencer à travailler avec Express.js. Ici vous pouvez remarquer comment ils ont divisé les routes à partir de l'app.
Par ailleurs, si de nombreux développeurs ont fait de votre cas avant, et il vous suffit de le forker et de mise à niveau.
Kioska. Regardez comment ils sont séparés, les événements dans des fichiers différents à la
events/
dossier.Ballons.io 2.3 k étoiles. Malheureusement, ils ont tout le socket serveur dans un fichier, mais vous pouvez apprendre l'ensemble de la structure de l'application avec node.js et de la prise.io
Si vous n'avez pas l'esprit, vous pouvez toujours en apprendre tapuscrit et aller pour https://nestjs.com/
Si vous voulez coller avec JS, je recommande fortement d'utiliser de l'oignon de l'architecture.
La meilleure pratique est de garder séparés logique d'entreprise, les contrôleurs, même les bibliothèques (ils doivent être enveloppé à l'intérieur de certaines classes /helpers) - juste au cas où, si vous devez migrer vers une autre bibliothèque (différents CSV analyseur etc.).
Avec des oignons, de l'architecture, vous n'avez pas de soins à partir de laquelle les demandes vient, il n'y aura pas beaucoup de changements, afin d'ajouter encore quelques courtier de message.
Aussi essayer celui-ci https://en.wikipedia.org/wiki/Domain-driven_design
ESLint peuvent aider à la bonne organisation du projet.