我的节点应用程序包含以下代码(我放置了代码结构的示例)
server.js 中的此代码,即 nodeModule 的入口点
function run() {
app.listen(3001, function () {
console.log("App is listenting on port 3000");
})
}
function addPath(args) {
plug.loadF(args.loadFolder);
};
function preProcess (args) {
if (_.isEmpty(args)) {
run();
}
};
module.exports = preProcess();
module.exports ={
run: run,
addPath: addPath
}
正如你可以看到导出两次这样,当从 CMD (调用server.js)和 second 调用app / module时,我支持这两个选项用于在node_modules
下使用代码作为依赖进行调用 module.exports = preProcess();
module.exports = preProcess();
是我的app / nodeModule从外部程序调用,如java / buildpack,并且没有传递args
导出run
和addPath
,如果我的模块在用户应用中安装为node_moudule,并且您想通过代码调用这些API
我的问题是节点中有更好的方法来编写那些出口,或者它是否正常?
答案 0 :(得分:1)
您必须了解节点中提供的导出模块。
module.exports对象由Module系统创建。有时 这是不可接受的;许多人希望他们的模块成为一个实例 一些课。为此,请将所需的导出对象指定给 module.exports。请注意,将所需对象分配给导出将 只需重新绑定本地导出变量,这可能不是什么 你想做什么。
〜https://nodejs.org/api/modules.html#modules_module_exports
简单来说,exports模块为您提供了将整个代码包装在一个文件中的功能,以便可以在另一个文件中重用它。
因此显然一个文件只能导出一个对象。
在上面的代码中,您需要将方法封装到一个对象中:
var server = {}
server.run = function () {
app.listen(3001, function () {
console.log("App is listenting on port 3000");
})
}
server.addPath = function addPath(args) {
plug.loadF(args.loadFolder);
};
server.preProcess = function (args) {
if (_.isEmpty(args)) {
run();
}
};
module.exports = server
现在,您可以在任何其他页面上执行以下操作:
var server = require ("../../path/to/server.js")
server.preProcess() // Call to preprocess function
server.addPath () // Call to addPath function
server.run() // Call to run function
基本上我已将所有方法封装到单个服务器中。对象然后导出对象。