Wie benötige ich alle Dateien in einem Ordner in node.js?
brauchen etwas wie:
files.forEach(function (v,k){
// require routes
require('./routes/'+v);
}};
Wie benötige ich alle Dateien in einem Ordner in node.js?
brauchen etwas wie:
files.forEach(function (v,k){
// require routes
require('./routes/'+v);
}};
Wenn require den Pfad eines Ordners erhält, sucht es nach einer index.js-Datei in diesem Ordner; wenn es eine gibt, verwendet es diese, und wenn nicht, schlägt es fehl.
Es wäre wahrscheinlich am sinnvollsten (wenn Sie die Kontrolle über den Ordner haben), eine index.js-Datei zu erstellen und dann alle "Module" zuweisen und dann einfach erfordern, dass.
ihrfile.js
var routes = require("./routes");
index.js
exports.something = require("./routes/something.js");
exports.others = require("./routes/others.js");
Wenn Sie die Dateinamen nicht kennen, sollten Sie eine Art Lader schreiben.
Arbeitsbeispiel für einen Lader:
var normalizedPath = require("path").join(__dirname, "routes");
require("fs").readdirSync(normalizedPath).forEach(function(file) {
require("./routes/" + file);
});
// Continue application logic here
Ich empfehle die Verwendung von Globus um diese Aufgabe zu erfüllen.
var glob = require( 'glob' )
, path = require( 'path' );
glob.sync( './routes/**/*.js' ).forEach( function( file ) {
require( path.resolve( file ) );
});
Basierend auf der Lösung von @tbranyen erstelle ich eine index.js
Datei, die beliebige Javascripts im aktuellen Ordner als Teil der 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$/) !== null && file !== 'index.js') {
var name = file.replace('.js', '');
exports[name] = require('./' + file);
}
});
Dann können Sie require
dieses Verzeichnis von einem beliebigen anderen Ort aus.
Eine weitere Möglichkeit ist die Verwendung des Pakets require-dir mit dem Sie Folgendes tun können. Es unterstützt auch Rekursion.
var requireDir = require('require-dir');
var dir = requireDir('./path/to/dir');
Ich habe einen Ordner /fields voller Dateien mit jeweils einer Klasse, z. B:
fields/Text.js -> Test class
fields/Checkbox.js -> Checkbox class
Fügen Sie dies in fields/index.js ein, um jede Klasse zu exportieren:
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);
Dadurch verhalten sich die Module eher wie in Python:
var text = new Fields.Text()
var checkbox = new Fields.Checkbox()
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.