require()在大型的多文件节点项目中

我正在做一个大的Node项目。 当然,我想分解成多个源文件。 在我的大多数源文件中,有很多来自标准库的模块,还有我自己的几个文件,我几乎想要在任何地方使用。

我一直在做这项工作,在每个源文件的开始部分都包含一个巨大的require块,但是这种感觉非常多余。 有一个更好的方法吗? 或者这是Node的令人钦佩的模块系统的预期结果?

好吧,这里有几件事。

首先,如果你的许多文件需要重复使用相同的库,那么你可能要退后一步,确定是否真的以正确的方式破坏了代码。 也许有更好的组织,你的源文件的子集只需要某些库?

其次,请记住global对象在Node.js应用程序中的所有require d文件之间共享。 你的“根”源文件,比如说index.js ,可以做一些事情,比如global.fs = require('fs'); 然后可以从您的各种文件中访问。 这将消除需要满足require的文件的require 。 (在Node.js中,不像在浏览器中,你必须明确声明你正在通过预先global.访问一个全局variables。)

对于CRUDtypes的Express应用程序来说,这可能是一个好主意,在这些应用程序中,有很多控制器的代码几乎相同,但对于每个视图都必须略有不同,而您只是想将它们分开,而不是针对任何特定的组织结构,但只是为了更容易debugging(在这个文件中的错误,而不是该文件)。 如果应用程序的结构比这更复杂,那么在使用这个技巧之前,先对全局variables采取通常的警告。

您可以使用容器模块来加载一系列模块。 例如,给出以下项目结构:

 lib/ index.js module1.js module2.js main.js 

你可以让index.js导入库中的其他模块。

 # index.js module.exports.module1 = require('./module1'); module.exports.module2 = require('./module2'); 

那么main.js只需要导入一个模块:

 # main.js var lib = require('./lib'); lib.module1.doSomething(); lib.module2.doSomethingElse(); 

这种技术可以扩展,减less冗余import。

我通常会说,要求块比在Node中使用全局更好。

你需要记住,需求被caching,所以当你把它们放在你所有的代码模块中时,你总是会得到同样的实例,而不是每一次。

这样做可以确保你得到合适的代码,并在你想要的地方得到预期的命名空间,而使用全局将包括你不需要的东西。 使用require做Node节点的方式也会使你的代码更轻便。

通过require-file-directory需要多个不带绝对path的文件。

1-可以在单个语句中需要多个文件。 2-可以要求只有他们的名字的文件。

访问解决scheme: https : //www.npmjs.com/package/require-file-directory