1

我正在开发一个大型 Node 项目。自然,我想将其分解为多个源文件。我在我的大部分源文件中都使用了来自标准库的许多模块,而且还有很多我自己的文件几乎可以在任何地方使用。

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

4

4 回答 4

3

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

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();

这种技术可以扩展,减少多余的进口。

于 2013-02-02T07:03:46.483 回答
2

我通常会说 require 块比在 Node.js 中使用 global 更好。

您需要记住,requires 是被缓存的,因此当您将它们放入所有代码模块中时,您将始终获得相同的实例,而不是每次都获得新的实例。

这样做可以确保您在所需的位置获得具有预期名称空间的适当代码,而使用 global 将包含您不需要的东西。使用 require 以 Node 方式执行此操作也会使您的代码更具可移植性。

于 2012-05-16T06:48:30.010 回答
1

好吧,这里有几件事。

首先,如果您的许多文件一遍又一遍地需要相同的库,您可能需要退后一步,确定您是否真的以正确的方式分解代码。也许有一个更好的组织,其中某些库只需要源文件的子集?

其次,请记住该对象在您的 Node.js 应用程序中的所有 d 文件global之间共享。require例如,您的“根”源文件index.js可以执行以下操作global.fs = require('fs');,然后可以从您的所有各种文件中访问它。这将消除对require充满requires 的文件的需要。(在 Node.js 中global.,与浏览器不同,您必须通过前置显式声明您正在访问全局变量。)

这对于 CRUD 类型的 Express 应用程序可能是一个好主意,在这些应用程序中,您有很多几乎相同的控制器代码,但每个视图必须略有不同,并且您只想将它​​们分开而不是针对任何特定的组织结构,但只是为了更容易调试(此文件中的错误,而不是该文件中的错误)。如果应用程序的结构比这更复杂,请在使用该技巧之前牢记针对全局变量的常见警告。

于 2012-05-16T04:48:52.813 回答
0

通过 require-file-directory 需要多个没有绝对路径的文件。

1- 在单个语句中可能需要多个文件。2- 可以只要求文件名。

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

于 2017-05-10T06:23:45.883 回答