Comment puis-je exiger de tous les fichiers dans un dossier dans node.js?
besoin de quelque chose comme:
files.forEach(function (v,k){
// require routes
require('./routes/'+v);
}};
Comment puis-je exiger de tous les fichiers dans un dossier dans node.js?
besoin de quelque chose comme:
files.forEach(function (v,k){
// require routes
require('./routes/'+v);
}};
Il serait probablement plus judicieux (si vous avez le contrôle sur le dossier) pour créer un index.js fichier et ensuite affecter tous les "modules", puis tout simplement exiger que.
yourfile.js
var routes = require("./routes");
index.js
exports.something = require("./routes/something.js");
exports.others = require("./routes/others.js");
Si vous ne connaissez pas les noms de fichiers, vous devez écrire une sorte de chargeur.
Exemple de travail d'un loader:
var normalizedPath = path.join(__dirname, "routes");
require("fs").readdirSync(normalizedPath).forEach(function(file) {
require("./routes/" + file);
});
// Continue application logic here
Base sur @tbranyen la solution, j'ai créer un index.js
fichier charge arbitraire javascripts sous dossier en cours dans le cadre de l' exports
.
// Load `*.js` under current directory as properties
// i.e., `User.js` will become `exports['User']` or `exports.User`
require('fs').readdirSync(__dirname + '/').forEach(function(file) {
if (file.match(/.+\.js/g) !== null && file !== 'index.js') {
var name = file.replace('.js', '');
exports[name] = require('./' + file);
}
});
Vous pouvez alors require
ce répertoire à partir de n'importe où ailleurs.
Une autre option est d'utiliser le package require-dir qui vous permet d'effectuer les opérations suivantes. Il prend en charge la récursivité.
var requireDir = require('require-dir');
J'ai un dossier /champs plein de fichiers avec une seule classe chaque, ex:
fields/Text.js -> Test class
fields/Checkbox.js -> Checkbox class
Déposer ce dans fields/index.js d'exportation pour chaque classe:
var collectExports, fs, path,
__hasProp = {}.hasOwnProperty;
fs = require('fs');
path = require('path');
collectExports = function(file) {
var func, include, _results;
if (path.extname(file) === '.js' && file !== 'index.js') {
include = require('./' + file);
_results = [];
for (func in include) {
if (!__hasProp.call(include, func)) continue;
_results.push(exports[func] = include[func]);
}
return _results;
}
};
fs.readdirSync('./fields/').forEach(collectExports);
Cela rend les modules agissent plus comme ils le feraient en Python:
var text = new Fields.Text()
var checkbox = new Fields.Checkbox()
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.