如何在 node.js 中要求文件夹中的所有文件?
需要类似的东西:
files.forEach(function (v,k){
  // require routes
  require('./routes/'+v);
}};
如何在 node.js 中要求文件夹中的所有文件?
需要类似的东西:
files.forEach(function (v,k){
  // require routes
  require('./routes/'+v);
}};
当 require 指定文件夹的路径时,它会在该文件夹中查找 index.js 文件;如果有,它会使用它,如果没有,它就会失败。
创建一个 index.js 文件,然后分配所有“module”,然后简单地要求它可能是最有意义的(如果您可以控制文件夹)。
你的文件.js
var routes = require("./routes");
索引.js
exports.something = require("./routes/something.js");
exports.others = require("./routes/others.js");
如果您不知道文件名,您应该编写某种加载程序。
加载器的工作示例:
var normalizedPath = require("path").join(__dirname, "routes");
require("fs").readdirSync(normalizedPath).forEach(function(file) {
  require("./routes/" + file);
});
// Continue application logic here
我建议使用glob来完成该任务。
var glob = require( 'glob' )
  , path = require( 'path' );
glob.sync( './routes/**/*.js' ).forEach( function( file ) {
  require( path.resolve( file ) );
});
基于@tbranyen 的解决方案,我创建了一个index.js文件,该文件在当前文件夹下加载任意 javascripts 作为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);
  }
});
然后您可以require从其他任何地方访问该目录。
另一种选择是使用require-dir包,它可以让您执行以下操作。它也支持递归。
var requireDir = require('require-dir');
var dir = requireDir('./path/to/dir');
我有一个文件夹 /fields 充满文件,每个文件都有一个类,例如:
fields/Text.js -> Test class
fields/Checkbox.js -> Checkbox class
将其放入 fields/index.js 以导出每个类:
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);
这使得module的行为更像它们在 Python 中的表现:
var text = new Fields.Text()
var checkbox = new Fields.Checkbox()