node常用内置模块

官网的模块都是 系统模块

参考:https://juejin.cn/post/7080871139068608543

一、path 模块 https://nodejs.org/dist/latest-v16.x/docs/api/path.html

   path 模块提供了用于处理文件和目录的路径的实用工具。 可以使用以下方式访问它:

   const path = require('path');
  • path.basename(path):返回 path 的最后一部分
    path.basename('/foo/bar/baz/asdf/quux.html');
    // 返回: 'quux.html'
  • path.dirname(path):返回 path 的目录名
    path.dirname('/foo/bar/baz/asdf/quux');
    // 返回: '/foo/bar/baz/asdf'
  • path.extname(path):返回 path 的扩展名。 如果 path 的最后一部分中没有 .,则返回空字符串。
    path.extname('index.html');
    // 返回: '.html'
    
    path.extname('index.coffee.md');
    // 返回: '.md'
    
    path.extname('index.');
    // 返回: '.'
    
    path.extname('index');
    // 返回: ''
    
    path.extname('.index');
    // 返回: ''
    
    path.extname('.index.md');
    // 返回: '.md'
  • path.join([...paths]): 【推荐使用这个】使用特定于平台的分隔符作为定界符将所有给定的 path 片段连接在一起,然后规范化生成的路径。
    path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
    // 返回: '/foo/bar/baz/asdf'
    
    path.join('foo', {}, 'bar');  // 如果任何路径片段不是字符串,则抛出 TypeError。
    // 抛出 'TypeError: Path must be a string. Received {}'
  • path.parse(path): 返回一个对象,其属性表示 path 的重要元素。
    path.parse('/home/user/dir/file.txt');
    // 返回:
    // { root: '/',
    //   dir: '/home/user/dir',
    //   base: 'file.txt',
    //   ext: '.txt',
    //   name: 'file' }
  • path.resolve([...paths]): 将路径或路径片段的序列解析为绝对路径。
    注意:resolve 只要碰到 / 根路径,就会抛弃前面的 路径
    // 给定的路径序列从右到左处理,每个后续的 path 会被追加到前面,直到构建绝对路径。构建好绝对路径后,前面的片段就是废弃的。
    path.resolve('/foo/bar', './baz');
    // 返回: '/foo/bar/baz'
    
    path.resolve('/foo/bar', '/tmp/file/');
    // 返回: '/tmp/file'
    
    path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');
    // 如果当前工作目录是 /home/myself/node,
    // 则返回 '/home/myself/node/wwwroot/static_files/gif/image.gif'

注意:有两个特殊的全局变量,__filename、__dirname。执行脚本文件时,node进程就会传入这俩变量值。
总结:resolve 只要碰到 / 根路径,就会抛弃前面的 路径;join 只是路径的连接,碰到 .. 或 ../ 才会进行路径的移动。【个人,推荐使用join】

二、fs 模块 https://nodejs.org/dist/latest-v16.x/docs/api/fs.html

// 模块引入
const fs = require('fs')

node文件系统的API大都提供三种操作方式:

  1. 同步操作文件:代码会被阻塞,不会继续执行
  2. 异步回调函数操作文件:代码不会被阻塞,需要传入回调函数,当获取到结果时,回调函数执行
  3. 异步Promise操作文件:代码不会被阻塞,通过fs.promises调用方法操作,会返回一个Promise,可以通过then、catch进行处理。

【说明:fs模块和上面的path模块 API 的分类不同,fs 同一类API大都有三种操作方式。下面就按功能来区分api】

  • 读取文件状态(信息)

    • fs.statSync:同步操作
      const filepath = './abc.txt'
      const info = fs.statSync(filepath)
      console.log(info);
    • fs.stat:异步操作
      fs.stat(filepath, (err, info) => {
        if(err) {
          console.log(err);
          return
        }
        console.log(info);
        console.log(info.isFile()); // 判断是否是一个文件
        console.log(info.isDirectory()); // 判断是否是一个文件夹
      })
      console.log('后续需要执行的代码');
    • fs.promises.stat: 异步Promis操作
      fs.promises.stat(filepath).then(info => {
        console.log(info);
      }).catch(err => {
        console.log(err);
      })
      
      console.log('后续需要执行的代码');
  • 文件描述符

    • fs.openSync:同步操作
    • fs.open:异步操作
      fs.open('./abc.txt', (err, fd) => {
        if(err) {
          console.log(err);
          return
        }
      
        // 通过文件描述符去获取文件信息
        fs.stat(fd, (err, info) => {
          console.log(info);
        })
      })
    • fs.promises.open
  • 文件的读取  

    • fs.readFileSync:同步操作
      import { readFileSync, writeFileSync } from 'fs'
      
      const file = readFileSync('./www.log', 'utf-8')
      console.log(file); // 文件内容
  • 文件的写入

    • fs.writeFileSync:覆盖原来的内容
      import { writeFileSync } from 'fs'
      
      writeFileSync('./www.log', "我是中国人")
    • appendFileSync:追加内容写到文件中
      import { appendFileSync } from 'fs';
      appendFileSync('./www.log', "我是中国人\r\n")   // \r\n 换行处理
      appendFileSync('./www.log', `${new Date().toLocaleString('zh-CN', {hour12: false})} -- 我是中国人\r\n`)   // \r\n 换行处理
  • 创建文件夹

    • fs.mkdirSync
    • fs.mkdir
      const fs = require('fs')
      
      // 创建文件夹
      const dirname = './haha'
      if(!fs.existsSync(dirname)) {
        fs.mkdir(dirname, (err) => {
          console.log(err);
        })
      }
  • 获取文件夹的内容

    • fs.readdir:获取文件夹中的所有文件(只是文件名)。
  • 重命名

三、Util 模块 https://nodejs.org/dist/latest-v16.x/docs/api/util.html 

  • isDate:判断是否是日期格式的变量
  • isAnyArrayBuffer:判断是否是buffer
  • isAsyncFunction:判断函数是否是异步的
  • format:格式化字符串
  • inspect: 将对象转为字符串

四、http 模块 https://nodejs.org/dist/latest-v16.x/docs/api/util.html

 

posted @ 2022-01-17 13:44  吴飞ff  阅读(230)  评论(0编辑  收藏  举报