一尘不染

node.js标准模块的全局变量?

node.js

我知道全局变量不好。

但是,如果我在框架的40个文件中使用节点的模块“ util”,那么最好仅将其声明为全局变量,例如:

util = require('util');

在index.js文件中,而不是在40个文件中写入该行?

因为我经常在每个文件中使用相同的5-10个模块,这样可以节省大量时间,而不是一直复制粘贴。

在这种情况下干不好吗?


阅读 270

收藏
2020-07-07

共1个答案

一尘不染

每个模块应该是独立的。在每个模块的第一个需求之后,require都不会花费任何东西。

如果您想单独测试一个模块怎么办?您会遇到很多问题,因为它无法识别您的应用程序中存在的某些“全局”要求。

是的,即使在这种情况下,全局变量也很糟糕。全球人员几乎总是在破坏:可测试性,封装性和易于维护。

更新的答案,2012年1月

global现在,该对象是每个模块内部的全局对象。因此,每次在模块内部分配全局变量(无作用域)时,该变量便成为global该模块对象的一部分。

global因此,该对象仍然不是 全局 对象,因此不能如此使用。

2012年12月更新

global现在,该对象在应用程序中具有全局作用域,可用于存储需要从所有模块访问的任何数据/功能。

2020-07-07