簡體   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