核心模块是node中自带的模块,可以在node中直接使用
window 是浏览器的宿主对象,node中是没有的
global 是node中的全局对象,作用类似于window
ES标准下,全局对象标准名应该是globalThis
核心模块
process
- 表示当前node进程
- 通过该对象可以获取进程的信息,或者对进程进行各种操作
- 如何使用
1.process是一个全局变量,可以直接使用
2.有哪些属性和方法:
process.exit()
- 结束当前进程,终止node
process.nextTick(callback[,...args])
- 将函数插入到tick队列中
- tick队列中的代码,会在下一次事件循环之前执行,即会在微任务队列和宏任务队列中的任务之前执行
调用栈
tick队列(相当于老版微任务队列,在微任务队列出现后被替代)
微任务队列
宏任务队列
- // console.log(11111);
- // process.exit()
- // console.log(22222);
- // console.log(33333);
-
- // 4 3 2 1
- setTimeout(() => {
- console.log(1); // 宏任务队列
- });
- queueMicrotask(() => {
- console.log(2); // 微任务队列
- });
- process.nextTick(() => {
- console.log(3); // tick队列
- });
- console.log(4); // 调用栈
path
- 表示的路径
- 通过path可以用来获取各种路径
- 要使用path,需要先对其进行引入
- 方法:
path.resolve([...paths])
- 用来生成一个绝对路径
相对路径:./XXX,../XXX
绝对路径:
- 在计算机本地
c:\xxx
/User/xxxx
- 在网络中
http://www.xxxx/....
https://www.xxxx/....
- 如果直接调用resolve,则返回当前工作目录
- 注意,我们通过不同的方法执行代码时,他的工作目录是有可能变化的
- 如果将一个相对路径作为参数,则resolve会自动将其转换为绝对路径,此时根据工作目录的不同,产生的绝对路径也不同
- 一般会将一个绝对路径作为第一个参数,一个相对路径作为第二个参数,这样他会自动计算出最终的路径
- const path = require('node:path');
- // const result = path.resolve();
- // const result = path.resolve('./hello.js');
- // const result = path.resolve('c:\\Users\\25705\\Desktop\\HTML\\node.js', '../../hello.js');
-
- // 最终形态
- // 以后再使用路径时,尽量通过path.resolve()来生成路径
- const result = path.resolve(__dirname, './hello.js');
- console.log(result);
fs(File System)
- fs用来帮助node来操作磁盘中的文件
- 文件操作也就是所谓的I/O,(input/output)读和写
- 使用fs模块,同样需要引入
- // readFileSync()同步读取文件的方法,会阻塞后边代码的执行,不推荐使用
- // 当我们通过fs模块读取磁盘中的数据时,读取到的数据总会以Buffer对象的形式返回
- // Buffer是一个临时用来存储数据的缓冲区
- // const buf = fs.readFileSync(path.resolve(__dirname, './hello.txt')); // 必须得使用path.resolve(__dirname,'相对路径')
- // console.log(buf);
- // console.log(buf.toString());
-
- // readFile()异步的读取文件的方法
- // fs.readFile(path.resolve(__dirname, './hello.txt'), (err, buffer) => {
- // if (err) {
- // console.log('出错了---');
- // } else {
- // console.log(buffer.toString());
- // }
- // });
-
- /*
- Promise版本的fs的方法
- */
- const fs2 = require('node:fs/promises');
- // fs2
- // .readFile(path.resolve(__dirname, './hello.txt'))
- // .then(buffer => {
- // console.log(buffer.toString());
- // })
- // .catch(e => {
- // console.log('出错了----');
- // });
- (async () => {
- try {
- const buffer = await fs2.readFile(path.resolve(__dirname, './hello.txt'));
- console.log(buffer.toString());
- } catch (e) {
- console.log('出错了----');
- }
- })();
fs.readFile()读取文件(异步)
fs.appendFile()创建新文件,或将数据添加到已有文件
fs.mkdir()创建目录
fs.rmdir()删除目录
fs.rm()删除文件
fs.rename()重命名
fs.copyFile()复制文件
- fs.appendFile(path.resolve(__dirname, './hello123.txt'), ',真不错').then(r => {
- console.log('添加成功');
- });
- /*
- mkdir可以接收一个 配置对象作为第二个参数,通过该对象可以对方法的功能进行配置
- recursive 默认值为false
- - 设置true以后,会自动创建不存在的上一级目录
- */
- // fs.mkdir(path.resolve(__dirname, './hello/abc'), { recursive: true })
- // .then(() => {
- // console.log('操作成功');
- // })
- // .catch(() => {
- // console.log('创建失败');
- // });
-
- // 该方法将被fs.rm()替代
- // fs.rmdir(path.resolve(__dirname, './hello'), { recursive: true })
- // .then(() => {
- // console.log('操作成功');
- // })
- // .catch(() => {
- // console.log('删除失败');
- // });
-
- // 实际上是剪切功能
- fs.rename(path.resolve(__dirname, './hello.txt'), path.resolve(__dirname, './hello1.txt')).then(() => {
- console.log('重命名成功');
- });