Node.js namespacing

Пострадав немного, чтобы наилучшим образом использовать модуль Node module/require()/exports, настроенный для правильного программирования OO. Является ли хорошей практикой создание глобального пространства имен и не использовать экспорт (как при разработке приложений js на стороне клиента)? Итак, в модуле (Namespace.Constructor.js):

Namespace = Namespace || {};
Namespace.Constructor = function () {
    //initialise
}
Namespace.Constructor.prototype.publicMethod = function () {
    // blah blah
}

... и при вызове файла просто используйте...

requires('Namespace.Constructor');
var object = new Namespace.Constructor();
object.publicMethod();

Спасибо

Ответ 1

В node.js, расположение модуля является пространством имен, поэтому нет необходимости в пространстве имен в коде, как вы описали. Я думаю, что есть некоторые проблемы с этим, но они управляемы. Node будет отображаться только код и данные, которые вы прикрепляете к объекту module.exports.

В вашем примере используйте следующее:

var Constructor = function() {
  // initialize
}
Constructor.prototype.publicMethod = function() {}
module.exports = Constructor;

И затем в вашем кодовом коде:

var Constructor = require('./path/to/constructor.js');
var object = new Constructor();
object.publicMethod();