公开模块到模块
我有节点应用程序需要获取文件夹的path,并从那里读取所有的文件。
例如
moduleA -server.js -controller --load.js
在load.js我有方法( loadFolderFiles
)应该得到文件path的path,并从中加载所有的文件。
现在从模块BI需要moduleA并添加文件夹path来读取文件
应用程序B的结构如下:
appB -src --files ---fileA.js ---fileB.js -server.js
在appB server.js里面,我正在做下面的事情(加载moduleA)
var moduleA = require('moduleA') moduleA.loadFolderFiles('/appB/src/files') moduleA.start();
现在moduleA将开始加载提供的path的文件(我想使用它的glob
)。
我的问题是 :
- 我发布moduleA作为npm模块和我的问题我应该如何公开moduleA.loadFolderFiles的API(推荐的方式)?
2.我应该如何提供path(相对/绝对)并从模块appB读取文件?
这是npm中的“moduleA”(用于testing) https://www.npmjs.com/package/samplenodeapp
这是moduleB加载moduleA的代码
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,可以吗?
如果需要设置加载文件夹,我build议将其移动到start
参数或模块设置。
var moduleA = require('moduleA')({ loadFolder: '/path/to/folder' }); // or var moduleA = require('moduleA'); moduleA.start({ loadFolder: '/path/to/folder' });
如果您select将其移动到模块设置,则应该从该模块导出function。
var createLoader = require('./controller/load'); module.exports = function (params) { // params === { loadFolder: '/path/to/folder' } var loadModule = createLoader(params.loadFolder); return { start: start, loadModule: loadModule } };