您现在的位置是:首页 > 正文

nodejs的require()函数真正干了些啥?

2024-02-01 04:30:39阅读 2

1 require()函数干了两件事

首先应当知道,require函数是nodejs提供的,用来模块化的,内置函数。

当你使用require(“./mydemo.js”),它做了两件事:

1、返回一个对象,其中包含了导入目标js文件中暴露的数据(属性、函数)。

可以通过var obj = require(“./mydemo.js”);接收,通过obj.x,obj.func( )取用。

2、运行mydemo.js。

本质是用一个函数把mydemo.js包起来,运行这个函数。但是,你不能我说啥就是啥啊,怎么验证呢?

2 验证运行本质

两个文件:

// main.js

var obj = require('./mydemo');

console.log(
    obj
);

console.log('obj.func(1024,1024) = ',obj.func(1024,1024));
var x = 666;
var y = 888;

function add(src, dev) {
    return src + dev;
}

exports.hello = "你好"
exports.name = "张三丰"
exports.func = add

/**
 * arguments 伪数组对象(类数组对象)其中封装了函数的参数
 *          - 是函数独有的,在函数体外没有!!!
 * 
 * 我们就来输出 arguments,证明 mydemo.js 真的被套在了一个函数里执行
 */
console.log(arguments);

// arguments.callee 保存的是当前执行函数对象,打印出来看一看
console.log(arguments.callee + '');

在终端运行 node index.js ,输出,可以看到函数体:

 

3 结论

 

 

4 参考 

尚硅谷nodejs课程(bilibili)

网站文章

  • 课程 | 混沌大学李善友第一性原理

    课程 | 混沌大学李善友第一性原理

    害怕,哈哈哈哈哈哈哈哈

    2024-02-01 04:30:10
  • Go语言学习-基本

    程序结构命名​ 如果是在函数外部定义,那么将在当前包的所有文件中都可以访问。名字的开头字母的大小写决定了名字在包外的可见性。如果一个名字是大写字母开头的(译注:必须是在函数外部定义的包级名字;包级函...

    2024-02-01 04:30:04
  • Trapping Rain Water

    Trapping Rain Water

    Givennnon-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.For example,Given[0,1,0,2,1,0,1,3,2,1,2,1], r...

    2024-02-01 04:29:57
  • Java 12 –开关表达式

    Java 12 –开关表达式

    Java 12, JEP 325:开关表达式增强了传统的switch语句,以支持以下新功能: 多个案例标签 开关表达式通过break返回值(在Java 13开关表达式中替换为yield ) 通过标签规则切换表达式返回值(箭头) PS Switch表达式是预览功能,默认情况下处于禁用状态。 一个传统的switch示例。 JEP325.java package...

    2024-02-01 04:29:29
  • Tensorflow2 导入自定义预训练模型

    网上大多数都是直接调用tf的内置application中的预训练模型,这里用自己训练好的预训练模型。预训练模型的最后全连接层不要,只保留前面的捕捉特征的层且这些层权重冻结不参与接下来的训练。不冻结也可...

    2024-02-01 04:29:24
  • 被遗忘的SQLServer比较运算符修饰词

    SQLServer中有三个关键字可以修改比较运算符:All、Any和Some,其中Some和Any等价。官方的参考文档http://technet.microsoft.com/zh-cn/library/ms187074%28SQL.90%29.aspx 他们作用于比较运算符和子查询之间,作用类似Exists、not exists、in、not in以及其他逻辑意义,这些语法同

    2024-02-01 04:29:17
  • linux问题排查常用命令详解

    linux问题排查常用命令详解

    前阵子部署的服务器出现了故障,针对故障现场做了个排查,后来发现是nginx的quic分支代码的问题,出现了死循环导致CPU 近100%记录下在排查过程中使用的命令和

    2024-02-01 04:29:11
  • Git远程仓库配置SSH(以github为例)

    Git远程仓库配置SSH(以github为例)

    输入命令以及。 输入命令,查看配置是否正确。 输入命令。 然后连续敲三次回车,如果没问题你会看到如下界面 输入命令,查看生成的公钥。 也可以直接打开文件进行查看。 打开github,点击用户头像,再点...

    2024-02-01 04:28:42
  • idea 一键导包

    idea 一键导包 一键删除没有 的包,导入缺失的包 ctrl + alt + o

    2024-02-01 04:28:33
  • Session会话追踪的实现机制

    Session会话追踪的实现机制

    Session(会话)是Servlet中的一种特殊的机制,它可以用来存储K-V键值对,它的生命周期较长,在服务器关闭或Session失效和客户端浏览器关闭之前,Session中的数据都不会消失,而且每...

    2024-02-01 04:28:26