我正在开发一个大型 Node 项目。自然,我想将其分解为多个源文件。我在我的大部分源文件中都使用了来自标准库的许多模块,而且还有很多我自己的文件几乎可以在任何地方使用。
我一直在通过require
在每个源文件的开头包含一个巨大的块来完成这项工作,但这感觉非常多余。有一个更好的方法吗?或者这是 Node 令人钦佩的模块系统的预期结果?
我正在开发一个大型 Node 项目。自然,我想将其分解为多个源文件。我在我的大部分源文件中都使用了来自标准库的许多模块,而且还有很多我自己的文件几乎可以在任何地方使用。
我一直在通过require
在每个源文件的开头包含一个巨大的块来完成这项工作,但这感觉非常多余。有一个更好的方法吗?或者这是 Node 令人钦佩的模块系统的预期结果?
您可以使用容器模块来加载一系列模块。例如,给定以下项目结构:
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();
这种技术可以扩展,减少多余的进口。
我通常会说 require 块比在 Node.js 中使用 global 更好。
您需要记住,requires 是被缓存的,因此当您将它们放入所有代码模块中时,您将始终获得相同的实例,而不是每次都获得新的实例。
这样做可以确保您在所需的位置获得具有预期名称空间的适当代码,而使用 global 将包含您不需要的东西。使用 require 以 Node 方式执行此操作也会使您的代码更具可移植性。
好吧,这里有几件事。
首先,如果您的许多文件一遍又一遍地需要相同的库,您可能需要退后一步,确定您是否真的以正确的方式分解代码。也许有一个更好的组织,其中某些库只需要源文件的子集?
其次,请记住该对象在您的 Node.js 应用程序中的所有 d 文件global
之间共享。require
例如,您的“根”源文件index.js
可以执行以下操作global.fs = require('fs');
,然后可以从您的所有各种文件中访问它。这将消除对require
充满require
s 的文件的需要。(在 Node.js 中global.
,与浏览器不同,您必须通过前置显式声明您正在访问全局变量。)
这对于 CRUD 类型的 Express 应用程序可能是一个好主意,在这些应用程序中,您有很多几乎相同的控制器代码,但每个视图必须略有不同,并且您只想将它们分开而不是针对任何特定的组织结构,但只是为了更容易调试(此文件中的错误,而不是该文件中的错误)。如果应用程序的结构比这更复杂,请在使用该技巧之前牢记针对全局变量的常见警告。
通过 require-file-directory 需要多个没有绝对路径的文件。
1- 在单个语句中可能需要多个文件。2- 可以只要求文件名。
访问解决方案:https ://www.npmjs.com/package/require-file-directory