Javascript node.js中的全局包导入

Javascript node.js中的全局包导入,javascript,node.js,Javascript,Node.js,我在node.js应用程序中有不同的模块,最后我导入了相同的包,例如矩npm 我想知道我们是否有更好的方法在一个地方导入所有依赖项,并像全局导入一样使用它,这样就不需要单独的npm模块导入导入出于以下几个原因,模块被设计到node.js的核心中: 为每个模块创建一个单独的变量名称空间,这样就不会有变量命名冲突。 让代码重用和共享node.js核心中内置的东西只要看看NPM中庞大的东西库就知道它是如何工作的。 增加每个功能块的独立性,使其更易于独立测试,简化整个模块的单元测试创建,等等。。。 使代

我在node.js应用程序中有不同的模块,最后我导入了相同的包,例如矩npm


我想知道我们是否有更好的方法在一个地方导入所有依赖项,并像全局导入一样使用它,这样就不需要单独的npm模块导入导入出于以下几个原因,模块被设计到node.js的核心中:

为每个模块创建一个单独的变量名称空间,这样就不会有变量命名冲突。 让代码重用和共享node.js核心中内置的东西只要看看NPM中庞大的东西库就知道它是如何工作的。 增加每个功能块的独立性,使其更易于独立测试,简化整个模块的单元测试创建,等等。。。 使代码之间的依赖关系清晰明了,而不是隐含的。 为了实现这些优势,除了一些核心内置特性外,您不需要依赖全局名称空间。并且,您要求每个模块声明性地导入它需要的其他模块

这样做的代价是在每个模块的顶部增加一个模板,在那里导入它需要的所有东西。这些模块是缓存的,因此运行时开销不大,但每个模块中都有一些重复编码。因此,如果您需要访问10个模块中的矩模块,那么您可以在10个模块中分别导入它。虽然这似乎是多余的,而且你应该摆脱来自非模块世界的东西,但获得模块的所有上述优势的成本很小

随着时间的推移,在node.js开发中,您会逐渐习惯这种情况。每个模块只是从导入它所依赖的其他模块开始。是的,有一些重复的代码,但这就是如何获得模块化的其他优势

一旦开始在全局名称空间中填充内容以防止在模块开始时键入一些内容,就开始创建隐式非声明性依赖项。您使您的代码更难在其他项目中共享或重用,并且您打开了变量命名冲突的可能性——想象一下,如果您从NPM使用的10件事情也都这样做了,或者想象一下10个人在您的项目上工作,都这样做了


所以,把它想象成刷牙。每次这样做都很痛苦,但如果你不这样做,你就得付出代价。只需在每个模块中导入所需的外部模块。

最佳做法是避免污染全局命名空间。