核心模块 是node中自带的对象 可以直接在node中直接使用
window是浏览器的宿主对象 node中没有
global 是node的全局对象 作用类似于window
ES标准下,全局对象的标准名应该是globalThis
01.process
表示当前的node的进程;通过该对象可以获取进程的信息,或者对进程作各种操作。process是一个全局变量,可以直接使用。
process.exit() 结束当前进程 终止node
process.nextTick() 表示将函数插入到 tick队列中
进程运行顺序:
调用栈 --> tick队列 --> 微任务队列 --> 宏任务队列
setTimeout(() => { console.log(1); //宏任务队列 }) queueMicrotask(() => { console.log(2); //微任务队列 }) process.nextTick(() => { console.log(3); }) console.log(4);//调用栈 //运行结果:4321
02.path
path用来引入路径。通过path可以用来获取各种路径。
- 引入 const path = require("node:path")
- 生成 path.resolve([...paths]) 用来生成一个绝对路径
注意:通过不同方式执行代码时,工作目录可能会发生变化。如果将一个相对路径作为参数,则resolve会自动将其转换为绝对路径,此时根据工作目录的不同,它所产生的绝对路径也不同。一般会将一个绝对路径作为第一个参数,一个相对路径作为第二个参数,这样它会自动计算出最终的路径。
使用 const result = path.resolve(__dirname,"./...") 确保不同的情况下路径不变
03.file system(fs)
fs用来帮助node操作磁盘中的文件进行I/O操作(input output)
引入: const fs = require("node:fs")
当通过fs模块读取磁盘中的数据时,读取到的数据总会以Buffer对象的形式返回。buffer是一个临时用来存储数据的缓冲区。
const buf = fs.readFileSync(path.resolve(__dirname,"./hello.txt"))
//同步使用方法 会阻塞后续程序
//Sync表示该方法为同步的方法 所以文件在没读出来之前是会阻塞后续代码的
//异步调用方法
fs.readFile(
path.resolve(__dirname,"./hello.txt"),
(err,buffer) => {
// console.log(err);
if(err){
console.log("出错啦!");
}else{
console.log(buffer.toString());
}
}
)
//Promise版本的fs方法
const fs = require("node:fs/promises")
fs.readFile(path.resolve(__dirname,"./hello.txt"))
.then(buffer =>{
console.log(buffer.toString());
}).catch(e => {
console.log("出错啦!");
})
//立即执行函数
;(async() =>{
try{
const buffer = await fs.readFile(path.resolve(__dirname,"./hello.txt"))
console.log(buffer.toString());
}catch(e){
console.log("出错啦!");
}
})()
fs的其他方法
fs.readFile() 读取文件
fs.appendFile() 创建新文件,或将数据添加到已有文件中
fs.mkdir() 创建目录
fs.rmdir() 删除目录
fs.rm() 删除文件
fs.rename() 重命名
fs.copyFile() 复制文件
使用方法:
fs.appendFile( path.resolve(__dirname,"./hello123.txt"), "happy Day!" ).then(r => { // console.log(r); console.log("添加成功"); }) //使用appendFile方法移动文文件 fs.readFile(".../aaa.png") .then(buffer =>{ return fs.appendFile( path.resolve(__dirname,"./hhh.jpg") ,buffer ) }).then(()=>{ console.log("操作成功!"); }) /* mkdir可以接收一个配置对象作为第二个参数 recursive 通过该对象可以对方法的功能进行配置 recursive 递归 默认值是false 设置为true后会自动创建不存在的上一级目录 */ fs.mkdir(path.resolve(__dirname,"./hello/abc"),{ recursive:true}) .then(r =>{ console.log("操作成功!"); }).catch(err => { console.log("操作失败!",err); }) //移除目录 fs.rmdir(path.resolve(__dirname,"./hello"),{ recursive:true}) .then(r =>{ console.log("操作成功!"); }) fs.rename( path.resolve(__dirname,"../111.jpg"), path.resolve(__dirname,"./111.jpg") ).then(r =>{ console.log("操作成功!"); })