Javascript Node.js:如何透明地要求和导出子模块
我想在一个名为Javascript Node.js:如何透明地要求和导出子模块,javascript,node.js,Javascript,Node.js,我想在一个名为module的存储库中收集很多依赖项,所以我只需要对其他存储库有一个依赖项。是否可能: 在模块存储库中index.js以收集子模块 const submoduleA = require('submoduleA') const submoduleB = require('submoduleB') exports.submoduleA = submoduleA exports.submoduleB = submoduleB index.js在另一个模块/库中,我需要所有子模块,因此
module
的存储库中收集很多依赖项,所以我只需要对其他存储库有一个依赖项。是否可能:
在模块
存储库中index.js以收集子模块
const submoduleA = require('submoduleA')
const submoduleB = require('submoduleB')
exports.submoduleA = submoduleA
exports.submoduleB = submoduleB
index.js在另一个模块/库
中,我需要所有子模块,因此我需要模块
const { submoduleA, submoduleB } = require('module')
这有可能吗?我知道这不是一个巨大的好处,但如果能解释一下所有子模块是如何可用的,那就太好了
我希望尽可能透明的是
模块
存储库。仅要求它获取所有其他依赖项,但不妨碍这些依赖项的正常语法。此示例创建了一个fruit
模块,该模块同时导出apple
模块和banana
模块
apple.js
香蕉酱
水果.js
app.js
app.js(备用)
var module=require('module'),对于调用函数use module.function_NAME(),有什么不起作用?“不起作用”不是一个非常有用的问题描述。它没有给我们提供调试信息,没有错误描述,没有任何需要继续的内容。仅供参考,此机制将不适用于较新的ESM
import
和export
,因为您无法以编程方式计算导出(导出必须静态声明)。请尝试此module.exports={submoduleA,submoduleB}
而不是exports.submoduleA=submoduleA;exports.submoduleB=submoduleB
。不清楚(双关语)你所说的“透明”是什么意思。你能具体说明一下你要求什么是透明的吗?谢谢,@Wyck!我将进一步尝试这个方法。我需要avajs('ava').default,但忘记了.default部分。不确定这是否是问题所在,但导出和要求是否与fruit.js中的一样。谢谢你的帮助,@Wyck!
function eatApple() {
return 'Yummy apple!';
}
module.exports = { eatApple };
function eatBanana() {
return 'Yummy banana!';
}
module.exports = { eatBanana };
module.exports = {
apple: require('./apple'),
banana: require('./banana')
};
const fruit = require('./fruit');
console.log(fruit.apple.eatApple(), fruit.banana.eatBanana());
const { apple, banana } = require('./fruit');
console.log(apple.eatApple(), banana.eatBanana());