如何要求深度嵌套的NodeJS模块?

埃里克

我具有以下应用程序结构:

application
|- config
|----- config.js
|- routes
|------ api
|-----------router.js 
|- Application.js
|- package.json

在/routes/api/router.js模块中,我需要/config/config.js文件并执行以下操作:

require('../../config/config.js');

我在上面发现了丑陋的代码,并希望使其更美观。另外,如果我移到/routes/api/router.js另一个文件夹,则必须重构所有要求。要求这些模块的最佳实践是什么,是否可以从应用程序文件夹根目录要求config.js,如下所示:

require('/config/config.js');

谢谢。

大胆

有几种方法可以解决此问题。一种是将所有共享代码(如config.js)放在一个目录下node_moduleslib如果要在该目录之外的目录中使用此目录config):

application
|- node_modules
|----- lib
|---------- config
|-------------- config.js
|- routes
|------ api
|-----------router.js 
|- Application.js
|- package.json

因此,您可能需要使用config.js require( 'lib/config/config.js' )

或者,您可以在其中创建lib符号链接,node_modules并将其链接到应用程序目录结构中的lib:

application
|- node_modules
|----- lib -> ../../lib
|- lib
|------ config
|---------- config.js
|- routes
|------ api
|-----------router.js 
|- Application.js
|- package.json

不幸的是,node docs不鼓励使用另一种替代方法,该替代方法NODE_PATH使您可以指定节点require()算法应查找的目录按照与相同的模式lib,您可以执行以下操作:

application
|- lib
|------ config
|---------- config.js
|- routes
|------ api
|-----------router.js 
|- Application.js
|- package.json

并设置为NODE_PATH等于$path_to_application/lib

更新

找到关于该主题的精彩讨论,其中包括上述选项以及其他一些选项。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章