如何在RT上添加插件并使用一些外部模块/文件

sho*_*a T 8 javascript module node.js npm express

我有node.js应用程序/模块,它与插件概念一起工作正常,即

我的模块就像代理一样具有其他功能,例如为开箱即用的功能(方法)添加新功能.为此,您需要执行以下操作:

克隆我的应用程序

创建一个名为extenders的新文件夹(在我的app中)

在此文件夹中,您应该提供两个文件

  1. extend.js将您的逻辑作为函数/方法
  2. extend.json定义你的API(知道要调用哪个文件)

注意:JS和JSON文件名必须相同

例如,假设这是您的extend.json文件

{
  "extenders": [
    {
        "path": "run",
        "fn": "runFn"
      },
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,当用户在浏览器中输入以下链接时

本地主机:3000 /运行

我用它的逻辑调用runFn函数(存在于extend.js文件中)并且这正在按预期工作(在我读取json和js文件并调用函数时extender[fnName](req, res));

现在我想支持通过代码添加外部扩展器的用例, 例如用户将执行类似的操作

var myModule = require('myModule');

myModule.extend('./pathTo/newExternalPathforExtendersFolder');
Run Code Online (Sandbox Code Playgroud)

所以当我的模块运行搜索天气有一个与所有的配置存在新的外部扩展,如果是指它在RT(于JS和JSON文件).

我的问题是:

  1. 我需要找到我的模块何时启动谁注册到我的模块然后在这个模块上做我的逻辑,如何在节点中完成?

2.如果节点中有其他解决方案,请告诉我.

Mat*_*tW. 0

我相信一个简单的路由器应该可以满足您的要求:

var userModule = require('userModule');

router.use('/run', function (req, res, next) {
  return next(userModule(req));

}).all(yourReverseProxy);
Run Code Online (Sandbox Code Playgroud)