我试图实现的是创建一个包含多个功能的模块。

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字符串,但当我有它总是抱怨类型是错误的。

我如何声明多个模块。在这种情况下出口?


当前回答

有多种方法可以做到这一点,下面提到了一种方法。 假设你有这样的.js文件。

let add = function (a, b) {
   console.log(a + b);
};

let sub = function (a, b) {
   console.log(a - b);
};

您可以使用以下代码片段导出这些函数,

 module.exports.add = add;
 module.exports.sub = sub;

你可以使用这个代码片段来使用导出的函数,

var add = require('./counter').add;
var sub = require('./counter').sub;

add(1,2);
sub(1,2);

我知道这是一个迟到的回复,但希望这有助于!

其他回答

有多种方法可以做到这一点,下面提到了一种方法。 假设你有这样的.js文件。

let add = function (a, b) {
   console.log(a + b);
};

let sub = function (a, b) {
   console.log(a - b);
};

您可以使用以下代码片段导出这些函数,

 module.exports.add = add;
 module.exports.sub = sub;

你可以使用这个代码片段来使用导出的函数,

var add = require('./counter').add;
var sub = require('./counter').sub;

add(1,2);
sub(1,2);

我知道这是一个迟到的回复,但希望这有助于!

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>);

除了@mash的回答,我建议你经常做以下事情:

const method = () => {
   // your method logic
}

const otherMethod = () => {
   // your method logic 
}

module.exports = {
    method, 
    otherMethod,
    // anotherMethod
};

注意:

你可以从otherMethod调用method,你会非常需要这个 当需要时,可以快速将方法隐藏为私有 这对于大多数IDE来说更容易理解和自动完成你的代码;) 您也可以使用相同的技术导入: const {otherMethod} = require('./myModule.js');

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
    };
}());

这只是供我参考,因为我想要达到的目的可以通过这个来实现。

在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);