从一个模块暴露到另一个模块
Expose modules from module to module
我有一个节点应用程序,它需要获取文件夹的路径并从中读取所有文件。
例如
moduleA
-server.js
-controller
--load.js
在load.js中,我有一个方法(loadFolderFiles
),它应该获取文件的路径路径并从中加载所有文件。
现在从模块B,我需要模块A并添加文件夹路径来读取文件
应用程序B的结构如下:
appB
-src
--files
---fileA.js
---fileB.js
-server.js
在appBserver.js中,我正在执行以下操作(加载模块A)
var moduleA = require('moduleA')
moduleA.loadFolderFiles('/appB/src/files')
moduleA.start();
现在moduleA将开始加载所提供路径的文件(我想使用glob
)。
我的问题是:
- 我将moduleA发布为npm模块,我的问题是我应该如何公开模块A.loadFolderFiles的API(推荐方式)
2.我应该如何提供它的路径(相对/绝对)和读取文件来自模块appB?
这是npm中的"模块A"(用于测试)https://www.npmjs.com/package/samplenodeapp
这是模块B加载模块A 的代码
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
};
正如你所看到的,我从controller/load中公开了如下方法(为loadFolderFiles提供api,可以吗?
如果需要设置加载文件夹,我建议将其移动到start
参数或模块设置。
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
}
};
相关文章:
- Javascript,访问一个主要对象模块模式中的每个对象
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 如何从模块链中调用函数.导出到节点中
- 尽管链接成功并已成功下载,但未找到NPM模块
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- 从模块内部访问Express装载路径
- RequireJS向模块传递配置总是返回undefined
- Node.js正在更改应用程序以使用集群模块
- 在Meteor项目中安装并包含npm模块后出错
- 模块模式和这个
- 将依赖外部库的UMD模块与browserfy捆绑在一起
- 找不到模块捆绑包
- JavaScript命名约定;静态“;类或模块
- 显示模块模式在Knockout中设置模型的新实例
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- Javascript模块系统I'I’我正在努力,但搞不明白
- 从一个模块暴露到另一个模块
- 在暴露之前需要模块的节点导致未定义
- 当不在RequireJS环境中时,全局暴露AMD模块
- 我可以使用暴露模块模式对闭包中的变量使用getter/setter吗