首页 > 解决方案 > 在 nodeJS 中自动 require 模块

问题描述

我正在寻找 VS 代码扩展,或任何 NodeJS 功能,或一些关于如何自动为我需要特定模块的 JavaScript 想法。我有一个我自己创建的依赖项,它是一个用于将内容记录到控制台的简单实用程序,因此console.log(colors.red("Error: something went wrong"))我可以简单地键入log.error("something went wrong"). 我现在为我创建的每个文件重复自己,我必须为我创建的每个文件require("./../utils/log")(路径一直从一个文件更改到另一个文件)。

是否有 VS 代码扩展,或任何 NodeJS 功能,或一些关于如何自动为我需要特定模块的 JavaScript 想法?

标签: node.jsvisual-studio-codevscode-settings

解决方案


nodejs 中模块化的好处很多。nodejs 中模块化的痛苦在于,您需要在模块开始时手动require()import在该模块的每个依赖项中手动操作。习惯它。这就是你在 nodejs 中编程的方式。是的,当来自其他环境时感觉重复,但是每个模块都必须物理声明并加载自己的依赖项,以便充分利用 nodejs 模块化。从长远来看,这是值得的。只需在每个模块的开头键入依赖项即可。

一段时间后,您开始意识到每个模块本质上都在开始时声明了它所依赖的内容(通过加载其依赖项)。而且,一旦您开始编写模块测试,您就会真正意识到每个模块都是可独立测试的,因为它加载了自己的所有依赖项,并且在测试之前不需要配置一些更大的环境。当您第一次决定要将一个模块共享到另一个项目中时,您会非常感激它已经是独立的和可共享的。这样做是值得的。

我现在为我创建的每个文件重复自己,我必须为我创建的每个文件 require("./../utils/log") (路径一直从一个文件更改为另一个文件)。

是的,这就是 nodejs 中的工作方式。任何解决这个问题的系统(可能使用全局变量)都会破坏 nodejs 的模块化,然后你的模块将不会是独立的,不会声明自己的依赖项,不会独立测试,不会'独立共享,等等......因为他们在完成工作之前会对现有的一些外部环境产生隐藏的依赖。

当你放弃模块独立性时,一点点避免打字是不值得的。

仅供参考,当您第一次在 nodejs 中编程时,您的情绪(关于在多个模块中重复输入相同的内容)很常见。我们程序员受过训练,能够识别代码重复并将其视为应该解决和避免的问题。这只是一种情况,它不应该被删除,并且重复导致模块是自我描述的、独立的可测试和可共享的,并且不依赖于某些全局环境。来的好事比坏事要好得多。


推荐阅读