node.js 导出方法门面设计模式
node.js exporting methods facade design pattern
我正在尝试在 node.js 应用程序中遵循外观设计模式,在该应用程序中,我将对象与名为 controller.js 的应用程序的其余部分一起使用作为外观。控制器控制对对象 user.js、animal.js 和 house.js 的调用,它们都是单独的文件。
在controller.js我做
var housecontroller = require("./controllers/housecontroller");
...
我想在另一个文件(客户端)中调用类似 controller.getHouse()
的东西。我该怎么做才能做到这一点而不必调用 housecontroller.getHouse()
?
我每个控制器的格式如下
module.exports = {
getHouse:function(){...},
...
}
我对如何正确导出内容以使其正常工作感到困惑。我 import/export controller.js 中的控制器及其方法如下
module.exports = {
getHouse : housecontroller.getHouse,
...
};
我在示例中只使用了房子,但这意味着我对用户和动物也使用了相同的方法,它们都有多种方法。在客户端中,我只是导入 controller.js 并使用它的方法。
var controller = require("./controller");
controller.getHouse();
根据您的 code/naming,控制器文件夹中可能有一个文件 controller.js,其中包含这样的内容
var housecontroller = require('./housecontroller');
var carcontroller = require('./carcontroller');
module.exports = {
getHouse: housecontroller.controller,
getCar: carcontroller.controller
};
客户端代码可以是:
var controller = require('./controllers/controller');
controller.getHouse();
我添加了 carcontroller 作为扩展的例子。
如果每个控制器只能提供一个功能,您可以将代码和这些示例更改为:
//housecontroller.js
module.exports = getHouse;
//controller.js
var housecontroller = require('./housecontroller');
var carcontroller = require('./carcontroller');
module.exports = {
getHouse: housecontroller,
getCar: carcontroller
};
虽然我不推荐它,因为您正在减少将来从该模块提供更多功能的机会
我正在尝试在 node.js 应用程序中遵循外观设计模式,在该应用程序中,我将对象与名为 controller.js 的应用程序的其余部分一起使用作为外观。控制器控制对对象 user.js、animal.js 和 house.js 的调用,它们都是单独的文件。
在controller.js我做
var housecontroller = require("./controllers/housecontroller");
...
我想在另一个文件(客户端)中调用类似 controller.getHouse()
的东西。我该怎么做才能做到这一点而不必调用 housecontroller.getHouse()
?
我每个控制器的格式如下
module.exports = {
getHouse:function(){...},
...
}
我对如何正确导出内容以使其正常工作感到困惑。我 import/export controller.js 中的控制器及其方法如下
module.exports = {
getHouse : housecontroller.getHouse,
...
};
我在示例中只使用了房子,但这意味着我对用户和动物也使用了相同的方法,它们都有多种方法。在客户端中,我只是导入 controller.js 并使用它的方法。
var controller = require("./controller");
controller.getHouse();
根据您的 code/naming,控制器文件夹中可能有一个文件 controller.js,其中包含这样的内容
var housecontroller = require('./housecontroller');
var carcontroller = require('./carcontroller');
module.exports = {
getHouse: housecontroller.controller,
getCar: carcontroller.controller
};
客户端代码可以是:
var controller = require('./controllers/controller');
controller.getHouse();
我添加了 carcontroller 作为扩展的例子。
如果每个控制器只能提供一个功能,您可以将代码和这些示例更改为:
//housecontroller.js
module.exports = getHouse;
//controller.js
var housecontroller = require('./housecontroller');
var carcontroller = require('./carcontroller');
module.exports = {
getHouse: housecontroller,
getCar: carcontroller
};
虽然我不推荐它,因为您正在减少将来从该模块提供更多功能的机会