Node.js学习笔记——Node.js的基础知识

本文深入探讨Node.js的模块系统,包括require函数的工作原理,require.resolve函数如何查询完整模块名而不加载模块,require.cache对象的功能及其如何缓存已加载模块。此外,还介绍了__filename与__dirname的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

require函数相关

  • 在node.js中,所有脚本文件都是一个模块文件。
  • 如果某文件在命令行窗口中通过“node”命令被直接运行的,因此在node.js中将该模块文件所定义的模块称为应用程序的主模块
  • 定义了一个require.main变量,用于检测一个模块是否为应用程序中的主模块。
if(module===require.main){
	console.log('This is the main module of application+
	')
}
  • 在加载模块文件时,将运行该模块文件中的每一行代码
//output.js.
var testing='this is a var from index.js';
exports.testing=testing;
console.log('you have got testing');
}
//main.js
var king=require('./output.js');

在命令行窗口中输入"node main.js"按下回车键,命令行窗口中也将显示output模块中的testing变量值的字符串,因为在加载模块时将运行模块文件中的每一行代码。(若在main.js有两个变量同时引用output模块,也只是会输出一次you have got testing,不会重复输出)

PS C:\Users\kingsley\Desktop\新建文件夹>  node main.js
you have got testing
PS C:\Users\kingsley\Desktop\新建文件夹>

require.resolve函数查询完整模块名

  • 查询时不会加载该模块
var king=require.resolve('./index.js');
console.log(king);
//命令行
C:\Users\kingsley\Desktop\新建文件夹> node hello.js
C:\Users\kingsley\Desktop\新建文件夹\index.js
PS C:\Users\kingsley\Desktop\新建文件夹>

require.cache对象

  • 该对象代表缓存了所有已经被加载模块的缓存区。
  • 该对象具有一个“键名/键值”结构,键名为每个模块的完整文件名,键值为各模块对象,代码如下:
require.cache["模块文件名"]
  • 使用以下代码查看缓存区中的test.js模块对象。
console.log(require.cache[require.resolve('./test.js')]);
  • 使用以下代码删除缓存区中的test.js模块对象。
delete require.cache[require.resolve('./test.js')];
  • 删除了以后重新加载模块时将重新运行一次该模块中的代码。

__filename & __dirname

console.log(__filename);
console.log(__dirname);

命令行:

C:\Users\kingsley\Desktop\新建文件夹> node hello.js
C:\Users\kingsley\Desktop\新建文件夹\hello.js
C:\Users\kingsley\Desktop\新建文件夹
PS C:\Users\kingsley\Desktop\新建文件夹>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值