美文网首页NodeJS开发教程
《NodeJS开发教程6-系统工具OS和Path》

《NodeJS开发教程6-系统工具OS和Path》

作者: Codingyu | 来源:发表于2018-04-23 22:39 被阅读14次

    这章我们来研究下nodejs为我们提供的常用系统工具。

    1.OS模块

    os模块为我们提供了一些操作系统OS的常用接口方法,nodejs是跨平台的所以,我们在之后测试输出的相关操作系统参数在不同平台上也会有不同,这里我用的是win10操作系统。
    首先需要引入os模块:

    var os = require("os");
    
    • os.tmpdir() 返回操作系统的默认临时文件夹。
    var tdir=os.tmpdir();
    console.log("操作系统的默认临时文件夹:"+tdir);
    
    运行输出【操作系统的默认临时文件夹:C:\Users\ADMINI~1\AppData\Local\Temp】
    
    • os.endianness() 返回 CPU 的字节序,可能的是 "BE"(Big Endian大端字节序) 或 "LE"(Little Endian小端字节序)。
    var cpuendia=os.endianness();
    console.log("CPU 的字节序:"+cpuendia);
    
    执行输出【CPU 的字节序:LE】//我这里是PC 一般pc都是小端字节序,所以输出为“LE”
    
    • os.hostname() 返回操作系统的主机名。
    var hostname=os.hostname();
    console.log("操作系统的主机名:"+hostname);
    
    执行输出【操作系统的主机名:67GCH468JGG565O】
    
    • os.platform() 返回操作系统名。
    var platform=os.platform();
    console.log("操作系统名:"+platform);
    
    执行输出【操作系统名:win32】
    
    • os.arch() 返回操作系统 CPU 架构,可能的值有 "x64"、"arm" 和 "ia32"。
    var osarch=os.arch();
    console.log("操作系统 CPU 架构:"+osarch);
    
    执行输出【操作系统 CPU 架构:x64】
    
    • os.loadavg() 返回一个包含 1、5、15 分钟平均负载的数组。
    var loadavg=os.loadavg();
    console.log("一个包含 1、5、15 分钟平均负载的数组:%j",loadavg);
    
    执行输出【一个包含 1、5、15 分钟平均负载的数组:[0,0,0]】
    
    • os.totalmem() 返回系统内存总量,单位为字节
    var totalmem=os.totalmem();
    console.log("系统内存总量,单位为字节:"+totalmem+"约等于"+Math.floor(totalmem/1024/1024)+"MB");
    
    执行输出【系统内存总量,单位为字节:8488148992约等于8094MB】
    
    • os.freemem() 返回操作系统空闲内存量,单位是字节。
    var freemem=os.freemem();
    console.log("操作系统空闲内存量,单位是字节:"+freemem+"约等于"+Math.floor(freemem/1024/1024)+"MB");
    
    执行输出【操作系统空闲内存量,单位是字节:4282806272约等于4084MB】
    
    • os.type() 返回操作系统类型('Linux' 在 Linux系统上, 'Darwin' 在 macOS 系统上,'Windows_NT' 在 Windows系统上.)
    var ostype=os.type();
    console.log("操作系统类型:"+ostype);
    
    执行输出:【操作系统类型:Windows_NT】
    
    • os.cpus() 返回操作系统cpus(型号、速度(单位 MHz)、时间(一个包含 user、nice、sys、idle 和 irq 所使用 CPU/内核毫秒数)
      被赋予网络地址的对象包含的属性:
    • model <string>
    • speed <number> (兆赫兹为单位)
    • times <Object>
      • user <number> CPU花费在用户模式下的毫秒时间数.
      • nice <number> CPU花费在良好模式下的毫秒时间数.
      • sys <number> CPU花费在系统模式下的毫秒时间数.
      • idle <number> CPU花费在空闲模式下的毫秒时间数.
      • irq <number> CPU花费在中断请求模式下的毫秒时间数.
    [
      {
        model: 'Intel(R) Core(TM) i7 CPU         860  @ 2.80GHz',
        speed: 2926,
        times: {
          user: 252020,
          nice: 0,
          sys: 30340,
          idle: 1070356870,
          irq: 0
        }
      },
      {
        model: 'Intel(R) Core(TM) i7 CPU         860  @ 2.80GHz',
        speed: 2926,
        times: {
          user: 306960,
          nice: 0,
          sys: 26980,
          idle: 1071569080,
          irq: 0
        }
      },
      {
        model: 'Intel(R) Core(TM) i7 CPU         860  @ 2.80GHz',
        speed: 2926,
        times: {
          user: 248450,
          nice: 0,
          sys: 21750,
          idle: 1070919370,
          irq: 0
        }
      },
      {
        model: 'Intel(R) Core(TM) i7 CPU         860  @ 2.80GHz',
        speed: 2926,
        times: {
          user: 256880,
          nice: 0,
          sys: 19430,
          idle: 1070905480,
          irq: 20
        }
      },
      {
        model: 'Intel(R) Core(TM) i7 CPU         860  @ 2.80GHz',
        speed: 2926,
        times: {
          user: 511580,
          nice: 20,
          sys: 40900,
          idle: 1070842510,
          irq: 0
        }
      },
      {
        model: 'Intel(R) Core(TM) i7 CPU         860  @ 2.80GHz',
        speed: 2926,
        times: {
          user: 291660,
          nice: 0,
          sys: 34360,
          idle: 1070888000,
          irq: 10
        }
      },
      {
        model: 'Intel(R) Core(TM) i7 CPU         860  @ 2.80GHz',
        speed: 2926,
        times: {
          user: 308260,
          nice: 0,
          sys: 55410,
          idle: 1071129970,
          irq: 880
        }
      },
      {
        model: 'Intel(R) Core(TM) i7 CPU         860  @ 2.80GHz',
        speed: 2926,
        times: {
          user: 266450,
          nice: 1480,
          sys: 34920,
          idle: 1072572010,
          irq: 30
        }
      }
    ]
    
    • os.networkInterfaces() 返回一个对象,包含只有被赋予网络地址的网络接口。
    • address <string> 被赋予的 IPv4 或 IPv6 地址
    • netmask <string> IPv4 或 IPv6 子网掩码
    • family <string> IPv4IPv6
    • mac <string> 网络接口的MAC地址
    • internal <boolean> 如果 网络接口是loopback或相似的远程不能用的接口时, 值为true,否则为false
    • scopeid <number> IPv6 数字领域识别码 (只有当 familyIPv6时可用)
    • cidr <string> 以 CIDR 表示法分配的带有路由前缀的 IPv4 或 IPv6 地址。如果 netmask 参数不可用,则该属性是 null
    {
      lo: [
        {
          address: '127.0.0.1',
          netmask: '255.0.0.0',
          family: 'IPv4',
          mac: '00:00:00:00:00:00',
          internal: true,
          cidr: '127.0.0.1/8'
        },
        {
          address: '::1',
          netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
          family: 'IPv6',
          mac: '00:00:00:00:00:00',
          internal: true,
          cidr: '::1/128'
        }
      ],
      eth0: [
        {
          address: '192.168.1.108',
          netmask: '255.255.255.0',
          family: 'IPv4',
          mac: '01:02:03:0a:0b:0c',
          internal: false,
          cidr: '192.168.1.108/24'
        },
        {
          address: 'fe80::a00:27ff:fe4e:66a1',
          netmask: 'ffff:ffff:ffff:ffff::',
          family: 'IPv6',
          mac: '01:02:03:0a:0b:0c',
          internal: false,
          cidr: 'fe80::a00:27ff:fe4e:66a1/64'
        }
      ]
    }
    

    2.Path模块

    • path.resolve(from,to) 返回将相对路径转为绝对路径。
    var absolutedir=path.resolve("tools_test.js");
    console.log("将相对路径转为绝对路径:",absolutedir);
    
    执行输出【将相对路径转为绝对路径: F:\Projects\nodejs\nodejstest-lession\lession6-nodejs-tools\tools_test.js】
    
    • path.isAbsolute(path) 返回是否绝对路径。
    var isAbsolute=path.isAbsolute(absolutedir);
    console.log("是否绝对路径:"+isAbsolute);
    
    执行输出:【是否绝对路径:true】
    
    • path.dirname(path) 返回路径中代表文件夹的部分。
    var dirname=path.dirname(absolutedir);
    console.log("路径中代表文件夹的部分:"+dirname);
    
    执行输出:【路径中代表文件夹的部分:F:\Projects\nodejs\nodejstest-lession\lession6-nodejs-tools】
    
    • path.basename(path) 返回路径中的最后一部分。
    var basename=path.basename(absolutedir);
    console.log("路径中的最后一部分:"+basename);
    
    执行输出:【路径中的最后一部分:tools_test.js】
    
    • path.extname(path) 返回文件的扩展名。
    var extname=path.extname(absolutedir);
    console.log("扩展名:"+extname);
    
    执行输出:【扩展名:.js】
    

    url参数查询解析模块

    • querystring.stringify(obj) 把js对象以url参数形式编码
    const querystring=require("querystring");
    
    var person={name:"July",age:22,address:"中国北京"};
    var str=querystring.stringify(person);
    console.log("编码后的键值对参数:%s",str);
    
    执行输出:【编码后的键值对参数:name=July&age=22&address=%E4%B8%AD%E5%9B%BD%E5%8C%97%E4%BA%AC】
    
    • querystring.parse(str) 解析url参数为js对象
    var parse_person=querystring.parse(str);//str 是 name=July&age=22&address=%E4%B8%AD%E5%9B%BD%E5%8C%97%E4%BA%AC
    console.log("解析后的键值对参数对象:%j",parse_person);
    
    执行输出:【解析后的键值对参数对象:{"name":"July","age":"22","address":"中国北京"}】
    

    相关文章

      网友评论

        本文标题:《NodeJS开发教程6-系统工具OS和Path》

        本文链接:https://www.haomeiwen.com/subject/mxkrlftx.html