目 录CONTENT

文章目录

NodeJS平台常用模块

Administrator
2021-02-01 / 0 评论 / 0 点赞 / 5507 阅读 / 9031 字

NodeJS平台常用模块

NodeJS它是一个运行平台,与浏览器一样都是用于运行JavaScritp的。同理在NodeJS的平台里在,它会有一些内置的模块提供给我们使用,现阶段我们主要掌握以下三个点行了(因为这三点算是使用得非常频繁的)

首先要弄清模块它是NodejS里面自带的,它使用的是CommonJS的规范

Path模块

console.log(__dirname);      //代表当前js文件所于的目录的路径,也叫文件夹路径
console.log(__filename);     //代表当前文件的路径

上面的两个内置变量是nodejs平台下面最基本的点,也是经常使用的变量

  • __dirname代表当前JS文件运行的目录的路径
  • __filename代表当前js文件运行的文件的路径

其中对于路径这一块nodejs有专门的模块去处理,这个模块就是path模块,它不用我们下载,在安装nodejs的时候就已经自带了

const path = require("path");  //导入nodejs的path模块用于处理路径问题
  1. path.join()将路径拼接起来

    let p1 = path.join(__dirname, "./txt");
    console.log(p1);
    
  2. path.extname()获取某珍上路径的后缀名

    const path = require("path");
    //extname这个方法用于获取某一个文件的后缀名(扩展名)
    let p1 = path.extname(__filename);          //获取当前的文件的后缀名  __filename代表当前文件
    console.log(p1);
    
    //同理,我现在想获取abc.txt的后面名呢
    //第一步:先获取txt目录下面的abc.txt的文件路径
    let p2 = path.join(__dirname, "./txt/abc.txt");
    //第二步:获取后缀名
    let p3 = path.extname(p2);
    console.log(p2);
    console.log(p3);
    

    判断文件的后缀名可以方便我们后期在express的框架里面做文件上传的时候判断文件的类型(因为文件的类型是根据后缀名来的)

  3. path.isAbsolute()判断某一个路径是否是一个绝对路径

    const path = require("path");
    //判断某一个路径是否是绝对路径
    let a = "./txt/abc.txt";            //这就是相对路径
    let b = `D:\\杨标的工作文件\\班级教学笔记\\H2003\\0129\\code\\012902\\txt\\abc.txt`;        //这就是绝对路径 
    let result1 = path.isAbsolute(a)
    console.log(result1);           //false.说明a的路径不是一个绝对路径
    
    let result2 = path.isAbsolute(b);
    console.log(result2);           //true,说明b的路径是一个绝对路径
    

    这个方法的优点还是后期在做文件上传的时候,我们存储的是一个文件的真实路径

  4. path.resolve()将一个相对路径转换成绝对路径

    const path = require("path");
    //这个就读是将一个相对路径,转换成绝对路径
    let p1 = path.resolve("./txt/abc.txt");
    console.log(p1);        //D:\杨标的工作文件\班级教学笔记\H2003\0129\code\012902\txt\abc.txt
    

FS模块

一般有了路径以后就会有文件,我们可以通过某一个路径去找到某一个文件,怎么处理呢?

nodejs里面,有一个模块专门用于读写文件,这个模块就是fs模块(全称可以理解为File System模块)

  1. fs.existsSync()判断某一个路径是否真实存在,可以判断文件夹路径,也可以判断文件路径

    //判断某一个文件是否存在
    let p1 = path.join(__dirname, "./txt/abc.txt");
    let result1 = fs.existsSync(p1);
    console.log(result1);           //true,代表这个路径是存在的
    
    //判断某一个文件夹是否存在
    let p2 = path.join(__dirname,"./img");
    let result2 = fs.existsSync(p2);
    console.log(result2);
    
  2. fs.rmdirSync()删除一个空的文件夹

    let p1 = path.join(__dirname, "./img");
    let result1 = fs.existsSync(p1);
    if (result1) {
        //说明这个文件夹的路径是存在的
        fs.rmdirSync(p1);           //删除p1这个路径下面的文件夹
    }
    else {
        //说明这个文件夹的路径是不存在的
        console.log("这个文件夹的路径不存在");
    }
    

    注意:这里只能删除一个空的文件夹,如果文件夹里面又有文件夹,或文件夹里面有文件,则会删除失败

  3. fs.unlinkSync()根据一个文件路径删除文件

    let p1 = path.join(__dirname, "./img/dl.txt");
    let result1 = fs.existsSync(p1);
    if (result1) {
        //现在我们删除的是一个文件,不是文件夹
        fs.unlinkSync(p1);          //这里的p1指的就是文件的路径
    }
    else {
        console.log("这个文件不存在");
    }
    
  4. fs.copyFileSync(oldPath,newPath)复制文件

    const path = require("path");
    const fs = require("fs");
    //要求把txt目录下面的abc.txt复制到img目录下去
    let oldPath = path.join(__dirname, "./txt/abc.txt");        //旧路径
    let newPath = path.join(__dirname, "./img/abc.txt");        //新路径
    
    fs.copyFileSync(oldPath, newPath);
    
  5. fs.renameSync(oldPath,newPath)文件重命名

    let oldPath = path.join(__dirname, "./txt/abc.txt");                 //旧的名子
    let newPath = path.join(__dirname, "./txt/biaogege.txt");            //新的名子
    if (fs.existsSync(oldPath)) {
        //一般在重命名之前,都要判断旧的文件是否是存在的
        fs.renameSync(oldPath, newPath);
    }
    else {
        console.log("文件不存在")
    }
    

    在文件重命名的时候,一定要检测旧的路径是否是存在的

    如果在重命名的时候路径不一致的时候,这个时候就会发生剪切的现象

    let oldPath = path.join(__dirname, "./txt/biaogege.txt");       //旧的路径
    let newPath = path.join(__dirname, "./img/biaogege.txt");       //新的路径
    //这个时候我们发现两个路径的目录是不一样的,如果我们再调用renameSync的方法,这就会发生一个剪切的现象
    if (fs.existsSync(oldPath)) {
        fs.renameSync(oldPath, newPath);
    }
    else {
        console.log("文件路径不存在");
    }
    
  6. fs.mkdirSync()根据一个路径创建一个文件夹

    //我们现在希望判断有当前目录下面有没有css目录,如果没有我们就创建一个
    let p1 = path.join(__dirname, "./css");     //这个路径现在是不存在的
    let result1 = fs.existsSync(p1);
    if (!result1) {
        //说明这个路径是不存在的
        fs.mkdirSync(p1);
    }
    else {
        console.log("当前路径已经存在了");
    }
    
  7. fs.readdirSync()读取某一个路径下面的文件夹内部的信息

    let p1 = path.join(__dirname, "./txt");     //这是当前的txt目录
    //我现在就想看一下这个目录下面到底有多少文件或文件夹,怎么办呢
    let arr = fs.readdirSync(p1);       //这个arr就是读取的结果
    console.log(arr);
    //[ '01.txt', '02.txt', '03.txt', '04.css', '05.html' ]
    

    我们现在如果得到列表了,想把所有的txt文件全部删除掉,怎么办呢?

    for (let item of arr) {
        //第一步:把路径与之前的p1拼起来
        //第二步:获取这个路径的后缀名,看它是不是.txt的
        //第三步:如果是.txt的,我就把它删除掉
        let tempPath = path.join(p1, item);
        let extName = path.extname(tempPath);
        if (extName == ".txt") {
            fs.unlinkSync(tempPath);
        }
    }
    
  8. fs.statSync()读取某一个路径的状态

    let p1 = path.join(__dirname, "./img");     //这是文件夹的路径
    //在fs里面,有个方法读取文件的状态
    //stat的全称可以看成是status状态
    let result1 = fs.statSync(p1);      //这就是第一个路径的状态
    console.log(result1);
    

    打印的结果如下

    Stats {
      dev: 1313523609,
      mode: 16822,
      nlink: 1,
      uid: 0,
      gid: 0,
      rdev: 0,
      blksize: 4096,
      ino: 3940649674650349,
      size: 0,
      blocks: 0,
      atimeMs: 1611903580664.1223,
      mtimeMs: 1611903580664.1223,
      ctimeMs: 1611903580664.1223,
      birthtimeMs: 1611901490787.4097,
      atime: 2021-01-29T06:59:40.664Z,
      mtime: 2021-01-29T06:59:40.664Z,
      ctime: 2021-01-29T06:59:40.664Z,
      birthtime: 2021-01-29T06:24:50.787Z
    }
    

    在上面的文件信息对象里面,有方法可以判断它是文件还是文件夹

    console.log(result1.isFile());          //判断当前路径是否是一个文件
    console.log(result1.isDirectory());     //判断当前路径是否是一个文件夹
    

    案例:现在有了这个判断过程以的以后,我们可以在一个文件夹下面删除文件与文件夹了

    //现在txt的目录下面有文件夹,也有文件,我如果要把下面所有的内容都删除掉,怎么办呢
    const path = require("path");
    const fs = require("fs");
    //第一步:设置路径
    let p1 = path.join(__dirname, "./txt");
    //第二步:判断这个文件夹是否存在
    let result = fs.existsSync(p1);
    if (result) {
        //第三步:读取这个文件夹的信息
        let ps = fs.readdirSync(p1);
        //第四步:遍历里面的信息
        for (let item of ps) {
            //第五步,拼接路径
            let tempPath = path.join(p1, item);
            //第六步:读取这个路径的状态,判断是文件夹还是文件
            let status = fs.statSync(tempPath);
            //第七步:判断是文件夹还是文件
            if (status.isDirectory()) {
                //说明它是文件夹
                fs.rmdirSync(tempPath);
            }
            else if (status.isFile()) {
                //说明它是文件
                fs.unlinkSync(tempPath);
            }
        }
    }
    
  9. fs.readFileSync()通过一个路径去读取一个文件

    //第一步:准备路径
    let p1 = path.join(__dirname, "./txt/yangbiao.txt");
    //第二步:读取上面路径里面文本文件的内容
    let result1 = fs.readFileSync(p1, { encoding: "utf8" });
    console.log(result1);
    
  10. fs.writeFileSync()把内容写入到一个文件里面去

    //第一步:先准备路径,你要写到哪个文件里面去
    let p1 = path.join(__dirname, "./txt/zhangsan.txt");        //这个路径默认是不存在的
    //第二步:准备写入的内容
    let str = `大家好啊,我是你们亲爱的标哥哥啊,帅气多金,阳光乐观`;
    //第三步:开始定义
    fs.writeFileSync(p1, str, { encoding: "utf8" });
    

OS模块

os模块主要是用于获取当前操作系统的相关信息的

  1. os.freemem()获取当前电脑的空闲内存
  2. os.totalmem()获取当前电脑的总内存
  3. os.cpus()获取当前电脑的cpu信息,它返回的是一个集合
  4. os.networkInterfaces()获取当前电脑的ip地址的信息
  5. os.platform()获取当前电脑的平台信息
  6. os.hostname()获取当前电脑的主机名
  7. os.homedir()获取当前系统的主目录
  8. os.tmpdir()获取当前系统的临时目录
0

评论区