Объявите несколько модулей .exports в Node.js
Я пытаюсь создать один модуль, содержащий несколько функций в нем.
module.js:
module.exports = function(firstParam) { console.log("You did it"); },
module.exports = function(secondParam) { console.log("Yes you did it"); },
// This may contain more functions
main.js:
var foo = require('module.js')(firstParam);
var bar = require('module.js')(secondParam);
Проблема заключается в том, что firstParam
является типом объекта, а secondParam
является строкой URL, но когда у меня есть, он всегда жалуется, что тип неверен.
Как я могу объявить несколько модулей .exports в этом случае?
Ответы
Ответ 1
Вы можете сделать что-то вроде:
module.exports = {
method: function() {},
otherMethod: function() {}
}
Или даже просто:
exports.method = function() {};
exports.otherMethod = function() {};
Затем в вызывающей программе:
var MyMethods = require('./myModule.js');
var method = MyMethods.method;
var otherMethod = MyMethods.otherMethod;
Ответ 2
Чтобы экспортировать несколько функций, вы можете просто перечислить их следующим образом:
module.exports = {
function1,
function2,
function3
}
И затем для доступа к ним в другом файле:
var myFunctions = require("./lib/file.js")
И затем вы можете вызывать каждую функцию, вызывая:
myFunctions.function1
myFunctions.function2
myFunctions.function3
Ответ 3
в дополнение к ответу @mash я рекомендую всегда делать следующее:
const method = () => {
// your method logic
}
const otherMethod = () => {
// your method logic
}
module.exports = {
method,
otherMethod,
// anotherMethod
};
Обратите внимание:
Ответ 4
Это только для моей справки, поскольку то, что я пытался достичь, может быть достигнуто этим.
В module.js
Мы можем сделать что-то вроде этого
module.exports = function ( firstArg, secondArg ) {
function firstFunction ( ) { ... }
function secondFunction ( ) { ... }
function thirdFunction ( ) { ... }
return { firstFunction: firstFunction, secondFunction: secondFunction,
thirdFunction: thirdFunction };
}
В main.js
var name = require('module')(firstArg, secondArg);
Ответ 5
Один из способов сделать это - создать новый объект в модуле вместо его замены.
например:
var testone = function () {
console.log('test one');
};
var testTwo = function () {
console.log('test two');
};
module.exports.testOne = testOne;
module.exports.testTwo = testTwo;
и позвонить
var test = require('path_to_file').testOne:
testOne();
Ответ 6
Если файлы написаны с использованием экспорта ES6, вы можете написать:
module.exports = {
...require('./foo'),
...require('./bar'),
};
Ответ 7
Вы можете написать функцию, которая вручную делегирует между другими функциями:
module.exports = function(arg) {
if(arg instanceof String) {
return doStringThing.apply(this, arguments);
}else{
return doObjectThing.apply(this, arguments);
}
};
Ответ 8
используйте этот
(function()
{
var exports = module.exports = {};
exports.yourMethod = function (success)
{
}
exports.yourMethod2 = function (success)
{
}
})();
Ответ 9
module.js:
const foo = function(<params>) { ... }
const bar = function(<params>) { ... }
//export modules
module.exports = {
foo,
bar
}
main.js:
// import modules
var { foo, bar } = require('module');
// pass your parameters
var f1 = foo(<params>);
var f2 = bar(<params>);
Ответ 10
Два типа модуля импорта и экспорта.
Тип 1 (module.js):
// module like a webpack config
const development = {
// ...
};
const production = {
// ...
};
// export multi
module.exports = [development, production];
// export single
// module.exports = development;
Тип 1 (main.js):
// import module like a webpack config
const { development, production } = require("./path/to/module");
тип 2 (module.js):
// module function no param
const module1 = () => {
// ...
};
// module function with param
const module2 = (param1, param2) => {
// ...
};
// export module
module.exports = {
module1,
module2
}
Тип 2 (main.js):
// import module function
const { module1, module2 } = require("./path/to/module");
Как использовать модуль импорта?
const importModule = {
...development,
// ...production,
// ...module1,
...module2("param1", "param2"),
};
Ответ 11
module1.js:
var myFunctions = {
myfunc1:function(){
},
myfunc2:function(){
},
myfunc3:function(){
},
}
module.exports=myFunctions;
main.js
var myModule = require('./module1');
myModule.myfunc1(); //calling myfunc1 from module
myModule.myfunc2(); //calling myfunc2 from module
myModule.myfunc3(); //calling myfunc3 from module
Ответ 12
также вы можете экспортировать его так
const func1 = function (){some code here}
const func2 = function (){some code here}
exports.func1 = func1;
exports.func2 = func2;
или
для анонимных функций, подобных этой
const func1 = ()=>{some code here}
const func2 = ()=>{some code here}
exports.func1 = func1;
exports.func2 = func2;
Ответ 13
module.exports = (function () {
'use strict';
var foo = function () {
return {
public_method: function () {}
};
};
var bar = function () {
return {
public_method: function () {}
};
};
return {
module_a: foo,
module_b: bar
};
}());