Javascript 在模块之间公开模块
我有一个节点应用程序,它需要获取文件夹的路径并从那里读取所有文件 例如Javascript 在模块之间公开模块,javascript,node.js,module,npm,fs,Javascript,Node.js,Module,Npm,Fs,我有一个节点应用程序,它需要获取文件夹的路径并从那里读取所有文件 例如 moduleA -server.js -controller --load.js 在load.js中,我有一个方法(loadFolderFiles),它应该获得文件的路径 路径并从中加载所有文件 现在从模块B开始,我需要要求模块A并添加文件夹的路径来读取文件 应用程序B的结构如下: appB -src --files ---fileA.js ---fileB.js
moduleA
-server.js
-controller
--load.js
在load.js中,我有一个方法(loadFolderFiles
),它应该获得文件的路径
路径并从中加载所有文件
现在从模块B开始,我需要要求模块A并添加文件夹的路径来读取文件
应用程序B的结构如下:
appB
-src
--files
---fileA.js
---fileB.js
-server.js
在appB server.js中,我执行以下操作(加载moduleA)
现在moduleA将开始加载所提供路径的文件(我想对其使用glob
)
我的问题是:
var moduleA = require('moduleA')
moduleA.loadFolderFiles('/appB/src/files')
moduleA.start();
var sample = require('samplenodeapp');
sample.start();
我公开模块a的代码如下
var express = require('express');
var loadModule = require('./controller/load')
var app = express();
function start (){
app.listen(3001, function () {
console.log("App is listenting on port 3000");
})
}
module.exports = {
start:start,
loadModule:loadModule
};
如您所见,我从控制器/加载中公开了如下方法(为loadFolderFiles提供api,可以吗?如果需要设置加载文件夹,我建议将其移动到
开始
参数或模块设置
var moduleA = require('moduleA')({ loadFolder: '/path/to/folder' });
// or
var moduleA = require('moduleA');
moduleA.start({ loadFolder: '/path/to/folder' });
如果选择将其移动到模块设置,则应从该模块导出函数
var createLoader = require('./controller/load');
module.exports = function (params) {
// params === { loadFolder: '/path/to/folder' }
var loadModule = createLoader(params.loadFolder);
return {
start: start,
loadModule: loadModule
}
};
在调用
start
之前是否需要调用loadFolderFiles
?@是的loadFolderFiles应该在之前调用:),现在我得到了它…如果我想使用moduleA,我可以这样做:var moduleA=require('moduleA');moduleA.start()
?@Пааааааааааааааааааааааааа。如果我想在将来加载多个文件夹,那么您建议如何执行?(来自Api prespective)2。建议如何读取给定路径的文件?我一定误解了你的问题。loadFolderFiles
做什么,设置要上载的文件夹?或者可能附加额外的中间件到express app?loadFolderFiles正在获取文件夹的路径(从包装器模块/应用程序,如appB),并可能使用fs或glob…(与中间件无关)加载它,然后您的版本对我来说似乎很完美。不过我会坚持绝对路径,它们更可靠。好的,谢谢你1+,你能提供一个例子,我应该如何在moduleA内部实现这个(你的第一个建议)var moduleA=require('moduleA')({loadFolder:'/path/to/folder'});