Node.js require模块的作用范围是什么

Node.js require模块的作用范围是什么

当我们需要在Node.js应用程序中使用其他模块的任何功能时,我们使用require()方法将模块的module.exports共享功能导入我们自己的模块,然后我们可以使用这些功能。

现在最大的问题是-所需模块的范围是什么?所以如果我们想要一个明确的答案,那么它在所需的模块中有一个模块范围。这意味着在模块中由require函数/方法导入的任何模块(javascript文件)都可以在整个模块中访问。但是,如果它在该模块的任何函数内部被需要,那么它将具有该函数的范围。

在用户定义模块的情况下,require()函数以模块的文件路径为参数,而在第三方模块的情况下,以模块名为参数。现在,每当我们尝试请求任何模块时,NodeJS会执行以下五个步骤:

  • 解析和加载: 通过模块的绝对路径来追踪并加载模块。如果找不到模块,将抛出错误。
  • 包装: 在加载节点模块之后,它将被包装在一个函数中,以使其具有私有范围。
  • 评估: 在该包装函数内部执行代码。
  • 返回exports: 然后,require()返回该模块中存在的所有内容。
  • 缓存: 所有所需的模块都被缓存,因此当再次需要时,不需要通过此过程再次获取。

现在让我们看看在用户定义模块和第三方模块的情况下,所需模块的作用范围是如何工作的。

首先,我们将创建两个文件,即”app.js”和”module.js”。”app.js”用于导入任何模块,而”module.js”用于制作用户定义的模块。

Node.js require模块的作用范围是什么

用户自定义模块: 在这种情况下,我们将自己设计一个模块,并且我们将从该模块中导出一个函数,并使用“require”将其导入到另一个模块中,然后在该模块中完全访问该函数。

使用用户自定义模块的步骤:

  • 在module.js中创建不同的函数
  • 从“module.js”导出任何一个函数或者所有函数
  • 通过“require”方法导入“module.js”导出的所有内容
  • 使用所有内容来获得期望的结果

示例1: 在这个示例中,我们在“module.js”中创建一个在控制台打印“GeeksforGeeks”的函数,并导出它。然后稍后我们将其导入到我们的“app.js”中。

module.js

function printGFG() {
    console.log("GeeksforGeeks");
}
module.exports = printGFG;

app.js

const data = require("./module.js");
data();

要运行此应用程序,请在进入 app.js 和 module.js 所在位置后,在终端中写入以下命令。

node app.js 

如果你已经全局安装了”nodemon”,那么你也可以用以下方式编写。

nodemon app.js

输出结果:

GeeksforGeeks

示例2: 在这里,我们将使用“express”模块。所以首先将它安装到我们的节点应用程序中

npm install express

app.js

const express = require("express");
const app = express();
 
app.get("/", (req, res) => {
    res.send("<h1>GeeksforGeeks</h1>");
});
 
app.listen(3000, (err) => {
    if (err) {
        console.log("Some Error Occurred");
        console.log(err);
    } else {
        console.log("Server Started on a port 3000");
    }
});

在终端中输入”node app.js”后,我们可以在”localhost:3000″上得到以下输出

输出:

Node.js require模块的作用范围是什么

所以我们可以清楚地看到,一旦任何模块在任何模块(javascript文件)中被引用,那么它可以完全在该模块(javascript文件)中访问。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程