繁体   English   中英

从模块到模块公开模块

[英]Expose modules from module to module

我有需要获取文件夹路径并从那里读取所有文件的节点应用程序。

例如

moduleA
 -server.js 
 -controller 
  --load.js

在 load.js 中,我有方法( loadFolderFiles ),它应该获取文件路径的路径并从中加载所有文件。

现在从模块 BI 需要 require moduleA 并添加到文件夹的路径以读取文件

应用程序 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 将开始加载提供的路径的文件(我想使用glob )。

我的问题是

  1. 我将 moduleA 发布为 npm 模块,我的问题是如何公开moduleA.loadFolderFiles的 API(推荐方式)?

2.我应该如何提供它的路径(相对/绝对)并从模块appB读取文件?

这是 npm 中的“moduleA”(用于测试) 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,可以吗?

如果需要设置加载文件夹,我建议将其移动到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
   }
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM