从节点NPM应用程序中公开模块

时间:2016-05-25 19:13:06

标签: javascript node.js module npm

我的节点应用程序(用作npm moudule并用作其他节点应用程序对package.json的依赖)需要提供对某些内部模块的访问权限(对于使用我的包的应用程序)依赖) 所有这些模块都使用导出来完成需要消费的功能

我的主要" module是index.js

在里面我做了以下几点:

var appState = require("./utils/appState");
var appLclStorage = require("./utils/AppLocalStorage");
var processHandler = require("./controller/processHandler");
....

var appApi = module.exports = {};

appApi.appState = appState;
appApi.appLclStorage = appLclStorage;
appApi.processHandler = processHandler;
....

我有额外的模块在外面曝光......

这是确定,但我的问题是在节点中是否有更好/更清晰的方法吗?

1 个答案:

答案 0 :(得分:1)

我觉得按照你描述的方式做得很好。

您可以通过在目录中添加index.js文件并将其从同一目录导出其他文件来构建它。然后require目录来获取它们。

// add.js
module.exports = function (num1, num2) { 
  return num1 + num2;
};

// subtract.js
module.exports = function (num1, num2) { 
  return num1 - num2;
};

// multiply.js
module.exports = function (num1, num2) { 
  return num1 * num2;
};

// index.js
var Calc = {};
require('fs').readdirSync(__dirname).forEach(function (file) {
  if (file !== 'index.js') {
    var fileName = file.replace('.js', '');
    Calc[fileName] = require('./' + fileName);
  }
});
module.exports = Calc;

// main.js
var Calc = require('./calc');

var zero = Calc.subtract(1, 1);
var one = Calc.multiply(1, 1);
var two = Calc.add(1, 1);

使用以下文件结构:

├── calc
│   ├── add.js
│   ├── index.js
│   ├── multiply.js
│   └── subtract.js
└── main.js