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.from(str) ----- 将一个字符串转换为buffer存储
- 历史使用 :
- 为什么用Buffer?
-
-
-
- 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.alloc(size) ----- 创建一个指定大小的Buffer( 注意:buffer的大小在初始化时就确定,不能动态改变 )
-
-
-
-
- Buffer.allocUnsafe(size) ----- 创建一个指定大小的Buffer,但是可能包含敏感数据
var buf = Buffer.allocUnsafe(5) console.log(buf)
运行结果:
-
Buffer.allocUnsafeSlow()
- Buffer.allocUnsafe(size) ----- 创建一个指定大小的Buffer,但是可能包含敏感数据
- 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("文件夹删除成功") } })
- 当目录下存在文件时,删除失败
- 注意:rmdir()只能删除空目录
- 创建目录(文件夹):fs.mkdir("目录名称",cb)
-
- 删除文件: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.unlink("目录名称",cb)
-
- 对目录和文件进行重命名: fs.rename(oldFile,newFile,cb)
- 基本使用:
- 隐藏功能:移动
- 写入文件操作:
- 简单文件写入:
- 同步文件写入:
- 异步文件写入:
- 流式文件写入:
- 读取文件操作:
- 简单文件读取:
- 同步文件读取:
- 异步文件读取:
- 流式文件读取:
- 对目录和文件进行重命名: 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、遇到的问题
暂无