我有一个node.js项目,它将作为基本API。现在,我想通过模块扩展此API的功能。这个模块应该能够向API公开其他方法,并且我想以某种方式将它们保存在单独的git存储库中。应该尽可能少地识别这些模块(最好的情况:只需将其添加到package.json
中的依赖项中)。
正如您可能已经猜到的那样,我的node.js知识还有些局限。在Symfony,我来自哪里,这将由服务完成。现在,有这个node.js service-container module,但我不知道这是否是节点方式"去吧。
答案 0 :(得分:0)
以下是我的工作方式
首先:创建一个配置文件,将您的API端点保存到处理程序映射(以及您的应用程序配置)
config.modules = [
{
moduleLocation: "/path/to/my/module1.js",
apiPath: "/api/myAPI1"
},
{
moduleLocation: "/path/to/my/module2.js",
apiPath: "/api/myAPI2"
}
];
config.port = 8080;
module.exports = config;
其次,在您的节点主应用程序中,使用express在config
中动态安装映射var config = require('./config');
var express = require('express');
var app = express();
app.listen(config.port, function() {
console.log("server starting on port " + config.port);
});
for(var module in config.modules){
app.use(module.apiPath, require(module.moduleLocation));
}
您的模块文件(module1.js和module2.js)应如下所示: var router = express.Router();
// invoked for any requested passed to this router
router.use(function(req, res, next) {
// .. some logic here .. like any other middleware
next();
});
这样,为了扩展您的API,您只需将处理模块添加到您的应用程序,将映射添加到配置文件,然后重新启动您的节点应用程序。这是我能想到的最小配置:)