您可以一次要求所有节点模块吗[关闭]
Posted
技术标签:
【中文标题】您可以一次要求所有节点模块吗[关闭]【英文标题】:Can you require all node modules at once [closed] 【发布时间】:2020-01-16 02:13:33 【问题描述】:目前,每当我想在 node.js 标准库中使用不属于全局对象的模块时,例如readFileSync()
,我需要/导入该功能所属的模块,在此示例中,即为 fs
模块。全局对象列表供参考:(https://nodejs.org/api/globals.html)。
有没有办法要求/导入所有 node.js 标准库,即让所有 node.js 标准库在我的程序中可用?
【问题讨论】:
您想这样做的原因是什么?某些包,例如 React,需要在每个“.jsx”文件中导入/需要。如果我理解正确,您想使用某个全局变量下的所有包吗?我不明白你怎么会在 Python 中做到这一点......如果你需要使用requests
,你不是必须在每个需要使用它的.py
文件中使用import requests
吗?任何包都一样,比如import json
,等等……从这个意义上说,Python 是如何带有“包含电池”的?
@MattOestreich 我编辑了这个问题 - 你对 python 导入是正确的,我忘了你必须导入你需要的库。
process
模块是“标准库”的一部分,也就是内置于节点中的...您不必要求process
才能使用exit()
- 您只需使用@ 987654332@ 在您的应用程序中的任何位置......
@MattOestreich 是的,process.exit()
在没有require
的情况下工作,这对我来说应该更容易。虽然同样的事情对fs.readFileSync
不起作用。所以有些“标准库”是全局的,有些不是。我在文档中找到了一个全局变量列表:nodejs.org/api/globals.html
@MattOestreich 我再次更新了问题以使用正确的术语。
【参考方案1】:
不,您不能同时要求所有节点模块。有数以万计的可能模块,一些内置在 node.js 中,一些只有在您将它们安装到项目中时才可用。为了模块化,您将在该模块中需要的模块导入到每个模块中。这样做是为了使模块成为模块化的,以便它们准确地声明需要导入的内容以及只需要导入的内容。
这与其他一些环境有点不同的思维方式,但是一旦您习惯了它,它就会工作得很好,并且使代码重用变得更加清洁和容易。每个模块文件的开头应导入您需要在该模块中使用的外部模块。
【讨论】:
我更新了问题以具体说明节点标准库 @leonsegal - 如果不单独加载每个标准库,仍然无法导入所有标准库。它们是必须加载和运行才能使用它们的 javascript 片段。我真的建议您习惯于在模块顶部使用一些require()
或 import
语句来声明每个模块的外部依赖项。一旦你习惯了它就可以正常工作并且有很多好处。试图破坏系统真的不值得。这就是 node.js 的工作方式。这就是模块化环境的工作方式。以上是关于您可以一次要求所有节点模块吗[关闭]的主要内容,如果未能解决你的问题,请参考以下文章