Javascript 使用两种不同的方法导出模块
我使用以下代码创建了一个节点应用程序(我将代码结构的示例放在下面) 这段代码位于server.js中,它是我的节点模块的入口点Javascript 使用两种不同的方法导出模块,javascript,node.js,express,module,requirejs,Javascript,Node.js,Express,Module,Requirejs,我使用以下代码创建了一个节点应用程序(我将代码结构的示例放在下面) 这段代码位于server.js中,它是我的节点模块的入口点 function run() { app.listen(3001, function () { console.log("App is listenting on port 3000"); }) } function addPath(args) { plug.loadF(args.loadFolder); }; functio
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)调用app/module时,我支持这两个选项,第二次用于在节点_modules下使用代码作为依赖项进行调用
module.exports=preProcess()代码>
module.exports=preProcess()代码>是指从外部程序(如java/buildpack)调用my app/nodeModule,且未传递任何参数
run
和addPath
,如果我的模块作为用户应用程序中的节点模块安装,并且您希望通过代码调用这些API我的问题是,在node中有更好的方法来编写这些导出,或者如果可以的话?您必须了解node中提供的导出模块 module.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
基本上,我已经将所有方法封装到一个“服务器”对象中,然后导出该对象。在这种情况下,最好使用
exports
而不是新的局部变量server
。用法问题。我喜欢让我的全局对象不杂乱无章。@salemahmed-感谢您的代码,当您以代码调用它为例时,它可以工作,但如果没有节点代码调用,它将如何工作?如果其他程序通过CMD调用它并调用server.js,它需要调用运行服务器之类的过程…您能否提供一个示例,同时回答module.exports=preProcess()?@alexmac-使用exports是什么意思?像我一样?如果没有,请提供示例,谢谢sir@SaleemAhmed-当模块从外部资源调用时,我需要一些逻辑,比如IIFE。。。