将公共变量传递到Node.js中单独的模块中的最佳方法是什么?

将公共变量传递到Node.js中单独的模块中的最佳方法是什么?,第1张

将公共变量传递到Node.js中单独的模块中的最佳方法是什么?

我发现使用依赖注入来传递东西是最好的样式。确实看起来像您拥有的东西:

// App.jsmodule.exports = function App() {};// Database.jsmodule.exports = function Database(configuration) {};// Routes.jsmodule.exports = function Routes(app, database) {};// server.js: composition rootvar App = require("./App");var Database = require("./Database");var Routes = require("./Routes");var dbConfig = require("./dbconfig.json");var app = new App();var database = new Database(dbConfig);var routes = new Routes(app, database);// Use routes.

这有很多好处:

  • 它将迫使您将系统分为具有明确依赖关系的组件,而不是将依赖关系隐藏在文件调用它们
    require("databaseSingleton")
    或更糟的位置的中间
    global.database
  • 它使单元测试很简单:如果我想测试
    Routes
    孤立地看,我可以用假注入
    app
    database
    PARAMS和测试只有
    Routes
    代码本身。
  • 它将所有对象图布线都放在一个位置,即合成根(在本例中为
    server.js
    应用程序入口点)。这使您可以查看一个地方,以查看系统中的所有组件如何组合在一起。

我所见到的对此更好的解释之一是对 .NET 优秀著作 Dependency Injection的 作者Mark
Seeman的采访
。它同样适用于Javascript,尤其是Node.js:通常用作经典服务定位器,而不仅仅是模块系统。 __

require



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5476924.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-12
下一篇2022-12-12

发表评论

登录后才能评论

评论列表(0条)

    保存