Node.js 将可选参数传递给require()
所以,我有这个问题——当我遇到JavaScript或节点问题时,不可避免的是我的编码问题;) 因此,冒着被嘲笑的风险,这就是问题所在: 我有一个模块,它有一个可选的config参数 使用标准模式,我得到的是: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}) 如果没有要传递
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
};
}