Node.js 将可选参数传递给require()

Node.js 将可选参数传递给require(),node.js,node-modules,Node.js,Node Modules,所以,我有这个问题——当我遇到JavaScript或节点问题时,不可避免的是我的编码问题;) 因此,冒着被嘲笑的风险,这就是问题所在: 我有一个模块,它有一个可选的config参数 使用标准模式,我得到的是: module.exports = function(opts){ return { // module instance }; } 在调用代码中有这样一个 var foo = require('bar')({option: value}) 如果没有要传递

所以,我有这个问题——当我遇到JavaScript或节点问题时,不可避免的是我的编码问题;)

因此,冒着被嘲笑的风险,这就是问题所在:

我有一个模块,它有一个可选的config参数

使用标准模式,我得到的是:

module.exports = function(opts){
    return {
        // module instance
    };
}
在调用代码中有这样一个

var foo = require('bar')({option: value})
如果没有要传递的选项,则代码如下所示

var foo = require('bar')({})
哪种看起来很丑

所以,我想这样做

var foo = require('bar')
这不起作用,因为导出是一个函数调用

那么,问题的实质是什么呢

a) 有没有办法实现这一崇高目标? b) 是否有更好的模式将参数传递给模块


非常感谢-我希望笑声过后,你能给我一些帮助:)

tldr:坚持使用
require('foo')('bar')

无法将其他参数传递到
require
。下面是一个例子,请注意它只需要一个参数:

Module.prototype.require = function(path) {
  assert(util.isString(path), 'path must be a string');
  assert(path, 'missing path');
  return Module._load(path, this);
};
如果您真的想避免
()
,可以尝试以下方法:

b、 js a、 js
但我觉得更难看。。。坚持原来的想法。

不完全删除函数调用,您可以使用options参数options来消除对空对象的需要:

module.exports = function(opts) {
    opts = opts || {};
    return {
        // module instance
    };
}

它并没有完全消除对
()
的需求,但比
({})
更好。我的意思是,如果你唯一的问题是“它很难看”,你不必在一行上完成所有工作。我能说什么?我想在我的编码风格中实现“禅”空的({})是非常难看的。我的代码应该是美丽的…它也应该是功能性的,易于理解。
'use strict';

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

// Default config:
console.log(b.doStuff()); // 'x is default'

// Reconfigure:
b.configure(42);

console.log(b.doStuff()); // 'x is 42'
module.exports = function(opts) {
    opts = opts || {};
    return {
        // module instance
    };
}