Подтвердить что ты не робот

Как потребовать файл в node.js и передать аргумент в методе запроса, но не в модуль?

У меня есть module.js, который должен быть загружен; Для работы нужно objectX;

Как передать объектX в module.js в методе require, предоставленном node.js?

спасибо

// my module.js
objectX.add('abc');
// error: objectX is undefined

Я хотел бы сделать это, не меняя всех своих классов, потому что это займет много времени... и они имеют хорошую производительность для клиентской стороны. (Я смешиваю файлы clientfiles с файлами сервера ***)

4b9b3361

Ответ 1

Модуль, который вы пишете, может экспортировать одну функцию. Когда вам требуется модуль, вызовите функцию с аргументом инициализации. Эта функция может возвращать объект (хеш), который вы помещаете в свою переменную в требуемом модуле. Другими словами:

main.js

var initValue = 0;
var a = require('./arithmetic')(initValue);
// It has functions
console.log(a);
// Call them
console.log(a.addOne());
console.log(a.subtractOne());

arithmetic.js:

module.exports = function(initValue) {
  return {
    addOne: function() {
      return initValue + 1;
    },
    subtractOne: function() {
      return initValue - 1;
    },
  }
}

Ответ 2

Вы можете избежать изменения фактического экспортируемого объекта путем цепочки в методе "init" (назовите его как хотите).

Модуль TestModule.js:

var x = 0; // Some private module data

exports.init = function(nx) {
    x = nx; // Initialize the data
    return exports;
};

exports.sayHi = function() {
    console.log("HELLO THERE "+x);
};

И затем требуя его так:

var TM = require('./TestModule.js').init(20);
TM.sayHi();

Ответ 3

Как обходной путь, как экспортировать некоторый метод init и передать objectX как параметр сразу после запроса?

var module = require('moduleJS');
module.init(objectX)