@Ivanus

Как сделать общий модуль Node JS?

Есть модуль Базы данных
function createBD(){
    console.log('create BD');
};

exports.createBD = createBD;

Приложение запускается так: node project.js
И объявляется в project.js: var bd = new bd.createBD();
Так же в project.js подключаются другие модули, вопрос состоит в том, как использовать один созданный объект (один модуль), во всех подключенных модулях, то есть не создавать в каждом модуле новый объект БД (var bd = new bd.createBD();), а подключить один раз и пользоваться им в подключенных модулях одного проекта?
  • Вопрос задан
  • 439 просмотров
Пригласить эксперта
Ответы на вопрос 3
matroskin13
@matroskin13
JavaScript developer, GO developer
function createBD(){
console.log('create BD');
};

module.exports = new createDB();
Ответ написан
@tex0
var bd = new bd.createBD();
//update: SomeModule - загруженный через require модуль
var mModule = new SomeModule(bd);


--- любой модуль, использующий объект bd оформляется так----
-------SomeModule---------
var lDb = undefined;

module.exports = function(dbObject)
{
    // как-то проверяем значение dbObject. Если не допустимое значение - ошибка
    lDb = dbObject;// внутренний объект bd
    // тут объекты, методы текущего модуля
   ...
}


Можете попробовать так.
Ответ написан
MarcusAurelius
@MarcusAurelius Куратор тега Node.js
автор Impress Application Server для Node.js
Use the Global, Luke!

// In application entry point or framework
global.api = {};
api.fs = require('fs');
api.http = require('http');
require('./db');
require('./application');
global.db = new api.db.createDatabase();

// In DB module: db.js
api.db = {};
api.db.createDatabase = function() {
  console.log('Create DB');
};

// In any place and any applied module
db.select('.....or whatever you want');

Еще хорошо освоить песочницы для экранирования модулей и прикладного кода в разных глобалах: https://github.com/HowProgrammingWorks/InversionOf...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы