2016-07-24 3 views
0

В moudle1.js я экспортирую модуль как объект.Node.js экспортирует функцию как переменную или объект между файлами

module.exports = { 

      attribute1: function(param1, param2) { 
        attribute2(param1); 
        attribute3(param2) 
      } 

      attribute2 : function(param) { 
      } 

      attribute3 : function(param1) { 
      } 
    }; 

В module2.js, я хочу, чтобы иметь возможность

var module1 = require('./module1'); 

exports.module1 = module1.attribute1; 
exports.module1 = module1.attribute2; 

Обратите внимание, что я не писал module1.attribute1(param1,param2) намеренно. Я хотел бы, чтобы не дать параметров в этом файле, но в третьей я бы смог

var module2 = require('./module2'); 
var param1 = 'foo'; 
var param2 = 'dummy'; 
module.module1(param1,param2); 

Это в основном для тестирования.

+1

Вы не можете обратиться к другому свойству в том же объекте, как 'attribute2 (param1);'. Это не так, как работает Javascript. Вы можете называть его «this.attribute2 (param1)» или вы можете назвать родительский объект и ссылаться на него по имени. – jfriend00

ответ

1

Фактически вы можете экспортировать функцию, а не объект.

Кроме того, пожалуйста, не используйте function как имя переменной, это reserved word.

// function.js 
module.exports = function (param1, param2) {...} 

// module.js 
var fn = require('./module'); 
fn('foo', 'dummy') 
+0

Я отредактировал вопрос. Это один и тот же случай для нескольких функций? – wayland700

0

Создайте файл module1.js который будет такой же, как ваша.

module.exports = { 

      attribute1: function(param1, param2) { 
        attribute2(param1); 
        attribute3(param2) 
      } 

      attribute2 : function(param) { 
      } 

      attribute3 : function(param1) { 
      } 
    }; 

Создайте другой файл и назовите его "index.js"

Внутри файла сохранить содержимое как

module.exports = { 
    module1 : require('./module1').attribute1 
    module2 : require('./module1').attribute2 
    module3 : require('./module1').attribute3 
} 

Держите оба файла в одну папку и назовите его для скажем "module".

экспортируйте имя папки, в которой вы хотите использовать функцию

var module = require('./module') 

и использовать функцию

module.module1("foo""bar"); 
Смежные вопросы