Node.js学习(二)----- 常用模块

1、fs(文件系统)

  • Buffer(缓存区)----- 在全局作用域中,无需require
    • 为什么用Buffer?
       在Node、ES6出现之前,前端工程师只需要进行一些简单的字符串或DOM操作就可以满足业务需要,所以对二进制数据是比较陌生。但node出现以后,前端工程师面对的技术场景发
      生了变化,可以深入到网络传输、文件操作、图片处理等领域,而这些操作都与二进制数据紧密相关。Node里面的buffer,是一个二进制数据容器,数据结构类似与数组,专门用于
      Node中数据的存放。
    • Buffer的基本使用
      • 历史使用 :
        const buf1 = new Buffer(10);
        安全隐患: 分配到的内存可能还存储着旧数据,这样就存在安全隐患
      • 新使用方式:
        • Buffer.from(str) ----- 将一个字符串转换为buffer存储
          var str = 'i will to change  buffer!'
          const buf = Buffer.from(str)
          console.log(str.length)
          console.log(buf)
          console.log(buf.length)
          console.log(buf.toString())

          运行结果:Buffer中存储的都是二进制数据,但是在显示时都是以16进制的形式显示

                                         

        • Buffer.alloc(size) ----- 创建一个指定大小的Buffer( 注意:buffer的大小在初始化时就确定,不能动态改变
          var buf = Buffer.alloc(5)
          console.log(buf)
          buf[0] = 10;
          buf[1] = 255;
          buf[2] = 0xaf;
          buf[5] = 12;//超出的时候不进行处理
          console.log(buf)
          console.log(buf[2])// 输出都是以10进制输出
          console.log(buf[2].toString(16))
          buf.forEach((item, index)=>{
              console.log(index + ":" + item);
          });

          运行结果:

                                         

        • Buffer.allocUnsafe(size) ----- 创建一个指定大小的Buffer,但是可能包含敏感数据
          var buf = Buffer.allocUnsafe(5)
          console.log(buf)

          运行结果:

        •  Buffer.allocUnsafeSlow()

      • Buffer使用相关注意点
        • Buffer的结构和数组很像,操作的方法也和数组类似;
        • Buffer中是以二进制的方式存储数据的;
        • Buffer是Node自带,不需要引入,直接使用即可
  • fs基本概念:
    • 在Node中,与文件系统的交互是非常重要的,服务器的本质就将本地的文件发送给远程的客户端;
    • Node通过fs模块来和文件系统进行交互,该模块提供了一些标准文件访问API来打开、读取、写入文件,以及与其交互;
    • 要使用fs模块,首先要从核心模块中加载:const fs = require("fs");
  • fs使用特点:
    • fs模块中所有的操作都有两种形式可供选择同步和异步;
    • 同步文件系统会阻塞程序的执行,也就是除非操作完毕,否则不会向下执行代码;
    • 异步文件系统不会阻塞程序的执行,而是在操作完成时,通过回调函数将结果返回;
  • 文件操作的基本使用方式:
    • 创建目录(文件夹):fs.mkdir("目录名称",cb)
      const fs = require("fs");
      fs.mkdir("test", function (err) {//test是目录的名称
          if (err) {
              console.log("fail")//目录已经存在
          } else {
              console.log("success")
          }
      })
    • 删除目录(文件夹):fs.rmdir("目录名称",cb)
      • 注意:rmdir()只能删除空目录
        fs.rmdir("./test", function (err) {
            if (err) {
                console.log(err)
                console.log("文件夹删除失败")
            } else {
                console.log("文件夹删除成功")
            }
        })
      • 当目录下存在文件时,删除失败 

                                         

                               

    • 删除文件:fs.unlink("目录名称",cb)
      fs.unlink("./test/test.txt", function (err) {
          if (err) {
              console.log(err)
              console.log("文件删除失败")
          } else {
              console.log("文件删除成功")
          }
      })
    • 列出目录下的所有文件:fs.readdir("目录名称",cb)
      fs.readdir("../basic", function (err, files) {
          if (!err) {
              console.log(files)
          }
      })

                     

    • 对目录和文件进行重命名: fs.rename(oldFile,newFile,cb)
      • 基本使用:
      • 隐藏功能:移动
    • 写入文件操作:
      • 简单文件写入:
      • 同步文件写入:
      • 异步文件写入:
      • 流式文件写入:
    • 读取文件操作:
      • 简单文件读取:
      • 同步文件读取:
      • 异步文件读取:
      • 流式文件读取:

2、events(事件触发器)

  • 基本使用:
    • 引入模块:
      var events = require('events');
    • 绑定一个事件:
      var myEmitter = new events.EventEmitter();
    • 监听事件:
      myEmitter.on("someEvent", function (data) {
         console.log(data)
      })
    • 触发事件:
      myEmitter.emit("someEvent", 'the event was emitted')
  • 使用util

3、遇到的问题

  暂无

猜你喜欢

转载自www.cnblogs.com/wxh0929/p/12177327.html