javascript - 从 Node NPM 应用程序公开模块

标签 javascript node.js module npm

我有 Node 应用程序(用作 npm 模块并被其他 Node 应用程序用作对 package.json 的依赖)需要提供对某些内部模块(对使用我的包作为依赖项的应用程序)的访问 所有这些模块都对需要使用的功能使用导出

我的“主要”模块是 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;
....

我有额外的模块暴露在外面......

这是可行的OK,但我的问题是在 Node 中是否有更好/更清洁的方法来做到这一点?

最佳答案

我发现按照您描述的方式进行操作效果很好。

您可以通过在目录中添加一个 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

关于javascript - 从 Node NPM 应用程序公开模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37445755/

相关文章:

networking - Linux 网络堆栈 : adding protocols with an LKM and dev_add_pack

javascript - JS图表: drawing trend lines

javascript - div 到达边界时改变移动方向

node.js - WebSocket WS SSL

python - 带有模块导入的命名空间

javascript - Require.js 正在伤害我的大脑。关于加载脚本/模块的方式的一些基本问题

javascript - 我可以将 Google Analytics 添加到没有 popup.html 的 Chrome 扩展程序吗?

javascript - 用 JS 显示一个随机的 css Sprite

node.js - 图片库网站最佳实践

javascript - 如何在npm scripts中使用nodemon构建和启动脚本?