Как заставить файл наследовать экспорт в node.js / express.js? - PullRequest
1 голос
/ 17 января 2012

В моем приложении express.js есть папка, содержащая три файла:

// models/one.js
exports.One = function() { return 'one'; }

// models/two.js
exports.Two = function() { return 'two'; }

// models/three.js
exports.Three = function() { return 'three'; }

Я бы хотел использовать его так:

var db = require('./models');
doSomething(db.One, db.Two, db.Three);

Другими словами, Я хочу сгруппировать экспорт из нескольких файлов в одну переменную .

Я знаю, что по умолчанию оператор require будет искать models / index.js. Могу ли я добавить что-нибудь в index.js, что позволит ему наследовать экспорт от других файлов в каталоге, например (нерабочий psuedocode):

// models/index.js
exports = require('./one.js', './two.js', './three.js);

Мысли? Спасибо!

1 Ответ

1 голос
/ 17 января 2012

См. Настройка существующего модуля для решения.

Или вы можете загрузить все файлы в каталоге, например,

a.js:

exports.a = 1;

b.js:

exports.b = 2;

index.js: (для этого потребуются все файлы .js втот же директрой и объедините их в один объект)

var fs = require('fs')
  , path = require('path')
  , bundle = {}
  , i
  , k
  , mod;

fs.readdirSync(__dirname).forEach(function(filename) {
  if (path.extname(filename) == '.js' &&
      path.resolve(filename) != __filename) {
    mod = require(path.resolve(path.join(__dirname, filename)));
    for (k in mod) {
      bundle[k] = mod[k];
    }
  }
});

module.exports = bundle;

, требующий каталог, который вы увидите

{ a: 1, b: 2 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...