我的情况是,我需要在索引文件中需要一个名为 Router 的模块,同时为该模块的变量赋值。
我想出了几种方法来实现它。然而,作为初学者,我想知道哪一个是最佳实践或设计以及为什么不能使用其他的。
方法 1 - 导出 setter 并将变量保留为“私有(private)”
路由器.js
var handler;
exports.setHandler=function(h){handler=h};
exports.route=function(){console.log(handler)}
index.js
var router=require('./router');
router.setHanlder('test');
router.route();
方法 2 - 让变量为“public”并使用“this”来引用
路由器.js
exports.handler={}; //not necessary
exports.route=function(){console.log(this.handler)}
index.js
var router=require('./router');
router.hanlder='test';
router.route();
方法 3 - 导出工厂函数以接收值作为参数
路由器.js
module.exports=function(handler){
return {route:function(){console.log(return handler)}};
}
index.js
var router=require('./router')('test');
router.route();
我应该使用上面哪一个?还有其他建议的方法吗?
最佳答案
我建议使用方法 3,它是回调;非阻塞代码。而且,这对我来说很接近自然!
关于javascript - 如何导出需要分配的 Node.js 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24616499/