3 回答
TA贡献1805条经验 获得超9个赞
当require被赋予文件夹的路径时,它将在该文件夹中查找index.js文件; 如果有,则使用它,如果没有,则失败。
最有意义的是(如果你可以控制文件夹)创建一个index.js文件然后分配所有“模块”然后只需要它。
yourfile.js
var routes = require("./routes");
index.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
TA贡献1804条经验 获得超2个赞
我建议使用glob来完成该任务。
var glob = require( 'glob' )
, path = require( 'path' );
glob.sync( './routes/**/*.js' ).forEach( function( file ) {
require( path.resolve( file ) );
});
TA贡献1811条经验 获得超5个赞
基于@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从任何其他地方的这个目录。
添加回答
举报