Je n'arrive pas à comprendre comment la méthode require
du noeud est capable de résoudre les chemins relatifs.Comment node.js nécessite-t-il que la méthode interprète les chemins relatifs?
Disons que j'ai une structure de fichier comme ceci:
root
|--- main.js
|
|--- importantUtilities.js
|
|--- apps
|
|--- app1.js
Si les deux /root/main.js
et /root/apps/app1.js
veulent exiger /root/importantUtilities.js
, ils Paramétrez le différemment fonction require
:
// File: /root/main.js
...
require('./importantUtilities.js');
...
// File: /root/apps/app1.js:
...
require('../importantUtilities.js');
...
Il n'y a pas besoin de préfixe __dirname
, et je ne vois pas comment fonctionne require
sans cette information.
Comment mettre en œuvre require
pour renvoyer le même fichier pour différents descripteurs de fichier?
EDIT: Le fait que l'exemple suivant fonctionne souffle aussi mon esprit (en utilisant la même structure de fichier):
// File: /root/main.js:
...
module.exports.getUtilities = function() { return require('./importantUtilities.js'); };
var utilities = module.exports.getUtilities(); // Works fine
...
// File: /root/apps/app1.js:
...
var main = require('../main.js');
var utilities = main.getUtilities(); // Works fine
...
Il semble que require
est même pas déterminer le chemin de base du champ d'appel; Il est plus important que chaque occurrence de require
dans le code source soit liée aux informations de chemin de fichier du code source. Est-ce correct?
Comment cela fonctionne-t-il?
C'est presque comme un pré-traitement! Exactement le lien de docs que je recherchais: D –