• node.js学习笔记 09核心模块


        核心模块是node中自带的模块,可以在node中直接使用

        window 是浏览器的宿主对象,node中是没有的

        global 是node中的全局对象,作用类似于window

        ES标准下,全局对象标准名应该是globalThis

        核心模块

            process

                - 表示当前node进程

                - 通过该对象可以获取进程的信息,或者对进程进行各种操作

                - 如何使用

                    1.process是一个全局变量,可以直接使用

                    2.有哪些属性和方法:

                        process.exit()

                            - 结束当前进程,终止node

                        process.nextTick(callback[,...args])

                            - 将函数插入到tick队列中

                            - tick队列中的代码,会在下一次事件循环之前执行,即会在微任务队列和宏任务队列中的任务之前执行

                        调用栈

                        tick队列(相当于老版微任务队列,在微任务队列出现后被替代)

                        微任务队列

                        宏任务队列

    1. // console.log(11111);
    2. // process.exit()
    3. // console.log(22222);
    4. // console.log(33333);
    5. // 4 3 2 1
    6. setTimeout(() => {
    7. console.log(1); // 宏任务队列
    8. });
    9. queueMicrotask(() => {
    10. console.log(2); // 微任务队列
    11. });
    12. process.nextTick(() => {
    13. console.log(3); // tick队列
    14. });
    15. console.log(4); // 调用栈

        path

            - 表示的路径

            - 通过path可以用来获取各种路径

            - 要使用path,需要先对其进行引入

            - 方法:

                path.resolve([...paths])

                    - 用来生成一个绝对路径

                        相对路径:./XXX,../XXX

                        绝对路径:

                            - 在计算机本地

                            c:\xxx

                            /User/xxxx

                            - 在网络中

                                http://www.xxxx/....

                                https://www.xxxx/....

                        - 如果直接调用resolve,则返回当前工作目录

                            - 注意,我们通过不同的方法执行代码时,他的工作目录是有可能变化的

                        - 如果将一个相对路径作为参数,则resolve会自动将其转换为绝对路径,此时根据工作目录的不同,产生的绝对路径也不同

                        - 一般会将一个绝对路径作为第一个参数,一个相对路径作为第二个参数,这样他会自动计算出最终的路径

    1. const path = require('node:path');
    2. // const result = path.resolve();
    3. // const result = path.resolve('./hello.js');
    4. // const result = path.resolve('c:\\Users\\25705\\Desktop\\HTML\\node.js', '../../hello.js');
    5. // 最终形态
    6. // 以后再使用路径时,尽量通过path.resolve()来生成路径
    7. const result = path.resolve(__dirname, './hello.js');
    8. console.log(result);

        fs(File System)

            - fs用来帮助node来操作磁盘中的文件

            - 文件操作也就是所谓的I/O,(input/output)读和写

            - 使用fs模块,同样需要引入

    1. // readFileSync()同步读取文件的方法,会阻塞后边代码的执行,不推荐使用
    2. // 当我们通过fs模块读取磁盘中的数据时,读取到的数据总会以Buffer对象的形式返回
    3. // Buffer是一个临时用来存储数据的缓冲区
    4. // const buf = fs.readFileSync(path.resolve(__dirname, './hello.txt')); // 必须得使用path.resolve(__dirname,'相对路径')
    5. // console.log(buf);
    6. // console.log(buf.toString());
    7. // readFile()异步的读取文件的方法
    8. // fs.readFile(path.resolve(__dirname, './hello.txt'), (err, buffer) => {
    9. // if (err) {
    10. // console.log('出错了---');
    11. // } else {
    12. // console.log(buffer.toString());
    13. // }
    14. // });
    15. /*
    16. Promise版本的fs的方法
    17. */
    18. const fs2 = require('node:fs/promises');
    19. // fs2
    20. // .readFile(path.resolve(__dirname, './hello.txt'))
    21. // .then(buffer => {
    22. // console.log(buffer.toString());
    23. // })
    24. // .catch(e => {
    25. // console.log('出错了----');
    26. // });
    27. (async () => {
    28. try {
    29. const buffer = await fs2.readFile(path.resolve(__dirname, './hello.txt'));
    30. console.log(buffer.toString());
    31. } catch (e) {
    32. console.log('出错了----');
    33. }
    34. })();

        fs.readFile()读取文件(异步)

        fs.appendFile()创建新文件,或将数据添加到已有文件

        fs.mkdir()创建目录

        fs.rmdir()删除目录

        fs.rm()删除文件

        fs.rename()重命名

        fs.copyFile()复制文件

    1. fs.appendFile(path.resolve(__dirname, './hello123.txt'), ',真不错').then(r => {
    2. console.log('添加成功');
    3. });
    1. /*
    2. mkdir可以接收一个 配置对象作为第二个参数,通过该对象可以对方法的功能进行配置
    3. recursive 默认值为false
    4. - 设置true以后,会自动创建不存在的上一级目录
    5. */
    6. // fs.mkdir(path.resolve(__dirname, './hello/abc'), { recursive: true })
    7. // .then(() => {
    8. // console.log('操作成功');
    9. // })
    10. // .catch(() => {
    11. // console.log('创建失败');
    12. // });
    13. // 该方法将被fs.rm()替代
    14. // fs.rmdir(path.resolve(__dirname, './hello'), { recursive: true })
    15. // .then(() => {
    16. // console.log('操作成功');
    17. // })
    18. // .catch(() => {
    19. // console.log('删除失败');
    20. // });
    21. // 实际上是剪切功能
    22. fs.rename(path.resolve(__dirname, './hello.txt'), path.resolve(__dirname, './hello1.txt')).then(() => {
    23. console.log('重命名成功');
    24. });

  • 相关阅读:
    如何使用CompletableFuture
    干货 | 做外贸必须掌握的小知识
    两个对象比较内部数据的变化,并返回对应key数组
    Java集合
    项目问题:使用Mybatis对Oracle查询数据记录时,navicat查询有记录,但是mybatis查询返回null
    网站建设中的视觉设计:吸引和保留用户
    阿里云 CLI相关使用笔记
    Uniapp有奖猜歌游戏系统源码 带流量主
    AcWing 799. 最长连续不重复子序列——算法基础课题解
    C++——map和set
  • 原文地址:https://blog.csdn.net/qq_33363757/article/details/127925194