La grande image
Il semble "vraiment mauvais", mais donnez-lui le temps. Il est, en fait, vraiment bon. L'explicite require()
s donner une transparence totale et la facilité de compréhension qui est comme une bouffée d'air frais au cours d'un cycle de vie du projet.
Pensez-y de cette façon: Vous êtes à la lecture d'un exemple, que vous trempez vos pieds dans le Node.js et vous avez décidé que c'est "vraiment mauvais de l'OMI." Vous êtes deuxième deviner les dirigeants de l'Node.js de la communauté, les personnes qui ont enregistré le plus d'heures d'écriture et de maintien de Node.js les applications que quiconque. Qu'est-ce que la chance que l'auteur fait une telle erreur de débutant? (Et je suis d'accord, de mon Ruby et Python arrière-plan, il semble au premier abord comme une catastrophe.)
Il y a beaucoup de battage médiatique et de la contre-battage médiatique autour de Node.js. Mais quand la poussière sera retombée, nous vous reconnaissez que l'explicite et de modules de "premières" paquets ont été un des principaux moteurs de l'adoption.
Le cas le plus courant
Bien sûr, node_modules
à partir du répertoire courant, puis les parents, puis les grands-parents, arrière-grands-parents, etc. est recherché. Afin de paquets que vous avez installés déjà de cette manière. Vous pouvez habituellement require("express")
à partir de n'importe où dans votre projet et il fonctionne très bien.
Si vous trouvez vous-même le chargement des fichiers en commun à partir de la racine de votre projet (peut-être parce qu'ils sont communs fonctions de l'utilitaire), alors que c'est un gros indice qu'il est temps de faire un paquet. Les paquets sont très simple: déplacer vos fichiers dans node_modules/
et de mettre un package.json
il n'. Voila! Tout dans cet espace est accessible à partir de l'ensemble de votre projet. Les paquets sont le bon moyen pour obtenir votre code dans un espace de noms global.
D'autres solutions de contournement
Personnellement, je n'utilise pas ces techniques, mais ils répondre à votre question, et bien sûr, vous savez que votre propre situation mieux que moi.
Vous pouvez configurer $NODE_PATH
de votre racine du projet. Ce répertoire sera recherché lorsque vous require()
.
Ensuite, vous pouvez compromis et nécessitent une commune, local de fichiers à partir de tous vos exemples. Que le bon fichier il suffit de le re-exporte le fichier dans le répertoire grand-parent.
examples/downloads/app.js (et beaucoup d'autres comme ça)
var express = require('./express')
examples/downloads/express.js
module.exports = require('../../')
Maintenant, lorsque vous déplacez ces fichiers, le pire des cas est la fixation d'une cale de module.