node笔记

node学习笔记

笔记中,一些不常用的属性或方法都有省略

fs - 文件系统

使用fs文件系统要引入require('fs'),这个是node自带的模块无需下载

关于回调

一般回调函数第一个参数都会保留给异常,如果操作成功,那第一个参数会是nullundefined

unlink

用法:

fs.unlink(src, callback) 

这个方法作用是删除一个文件

unlinkSync

用法:

fs.unlinkSync(src)

这个方法一样是删除一个文件,不过是同步的去执行操作

rename

用法:

fs.rename(src, renameSrc, callback)

更改文件文字,第一个参数是文件路径,第二个参数是修改名字后的路径

stat方法

fs.stat(path, callback)

回调接收两个参数,第二个参数是states对象,这个对象提供了文件的信息

state类的方法:

方法 描述
stats.isFile() 如果是文件返回 true,否则返回 false。
stats.isDirectory() 如果是目录返回 true,否则返回 false。

readdir

读取目录信息

rs.readdir(path, callback(err, file))

rmdir

删除目录

rs.rmdir(path, callback(err))

文件描述符

每个打开的文件都会分配一个文件描述符的数值标识,大多操作系统会限制文件描述符的数量,所以操作完成后要关闭描述符,不然会造成内存泄漏,最后应用奔溃。

打开文件fs.open,关闭文件fs.close

fs.open

用法:

fs.open(src, flags[, mode], callback)

flags是文件打开的行为。mode是文件的权限

flags参数值:

Flag 描述
r 读取文件,如果不存在报错
r+ 读写文件,如果不存在报错
rs 以同步的方式读取文件
rs+ 以同步的方式读写
w 写入方式打开文件,文件不存在则创建
wx 读写方式打开文件,文件不存在则写入失败
w+ 以读写方式打开文件,不存在则创建
wx+ 如果文件存在,则文件读写失败
a 以追加模式打开文件,如果文件不存在则创建。
ax 但是如果文件路径存在,则文件追加失败。
a+ 以读取追加模式打开文件,如果文件不存在则创建。
ax+ 类似 ‘a+’, 但是如果文件路径存在,则文件读取追加失败。

Buffer(缓冲区)

javascript本身只有字符串数据类型,没有二进制类型,所以在node.js中定义了一个buffer类,这个buffer库为node.js提供了一种存储原始数据的方法,让node可以处理二进制数据。一个buffer类类似于一个整数数组,存于v8内存之外的一块原始内存中。

在nodejs6.0前使用new Buffer() 创建buffer实例,因为有捕获一些敏感数据,所以在6.0以后使用Buffer.from()来创建buffer对象

创建 Buffer 类:

Buffer 提供了以下 API 来创建 Buffer 类:

Buffer.alloc(size[, fill[, encoding]]): 返回一个指定大小的 Buffer 实例,如果没有设置 fill,则默认填满 0

Buffer.allocUnsafe(size): 返回一个指定大小的 Buffer 实例,但是它不会被初始化,所以它可能包含敏感的数据

Buffer.allocUnsafeSlow(size)

Buffer.from(array): 返回一个被 array 的值初始化的新的 Buffer 实例(传入的 array 的元素只能是数字,不然就会自动被 0 覆盖)

Buffer.from(arrayBuffer[, byteOffset[, length]]): 返回一个新建的与给定的 ArrayBuffer 共享同一内存的 Buffer。

Buffer.from(buffer): 复制传入的 Buffer 实例的数据,并返回一个新的 Buffer 实例

Buffer.from(string[, encoding]): 返回一个被 string 的值初始化的新的 Buffer 实例

stream(流)

Stream是一个抽象接口,node很多对象实现了这个接口。例如http服务器发起请求的request对象就是一个stream。

stream有四种流类型:

readable 可读
writable 可写
duplex   可读可写
transform写入,读取

常用事件:

data  当有数据可读触发
end   没有更多数据触发
error 写入接收出错触发
finish所有数据写入到底层系统触发

从流读取数据

var fs = require("fs");
var data = '';

// 创建可读流
var readerStream = fs.createReadStream('input.txt');

// 设置编码为 utf8。
readerStream.setEncoding('UTF8');

// 处理流事件 --> data, end, and error
readerStream.on('data', function(chunk) {
data += chunk;
});

readerStream.on('end',function(){
console.log(data);
});

readerStream.on('error', function(err){
console.log(err.stack);
});

console.log("程序执行完毕");

写入流

var fs = require("fs");
var data = '菜鸟教程官网地址:www.runoob.com';

// 创建一个可以写入的流,写入到文件 output.txt 中
var writerStream = fs.createWriteStream('output.txt');

// 使用 utf8 编码写入数据
writerStream.write(data,'UTF8');

// 标记文件末尾
writerStream.end();

// 处理流事件 --> data, end, and error
writerStream.on('finish', function() {
    console.log("写入完成。");
});

writerStream.on('error', function(err){
console.log(err.stack);
});

console.log("程序执行完毕");

process

一些属性:

属性 描述
stdout 标准输出流。
stderr 标准错误流。

stdin|标准输入流。
argv|argv 属性返回一个数组,由命令行执行脚本时的各个参数组成。它的第一个成员总是node,第二个成员是脚本文件名,其余成员是脚本文件的参数。
execPath|返回执行当前脚本的 Node 二进制文件的绝对路径。
platform|运行程序所在的平台系统 ‘darwin’, ‘freebsd’, ‘linux’, ‘sunos’ 或 ‘win32’
pid|当前进程的进程号。

一些方法

方法 描述
abort() 这将导致 node 触发 abort 事件。会让 node 退出并生成一个核心文件。
chdir(directory) 改变当前工作进程的目录,如果操作失败抛出异常
cwd() 返回当前进程的工作目录
memoryUsage() 返回一个对象,描述了 Node 进程所用的内存状况,单位为字节

util工具

util.inherits 实现对象间的原型继承

util.inherits(要被继承,继承过去的)

util.inspect 将任意对象转换字符串的方法

util.inspect(object, 更多信息, 递归层数, 颜色)

util.isArray 检测一个对象是否是数组,是返回true,否返回false

util.isArray(object)

util.isRegExp 检测参数是否是正则表达式,是返回true,否返回false

util.isArray(str)

util.isDate 检测参数是否是一个日期,是返回true,否返回false

util.isArray(data)

util.isError 检测参数是否是一个错误对象,是返回true,否返回false

util.isArray(object)

path

resolve

解析str字符到from的绝对路径中

resolve(from, [...str]);

url

parse

解析url地址,放回一个存有url信息的对象, 第一个bool值默认false,true为将jquery信息转换为对象。第二个默认false,true为将//为头的信息转换为host,false则是将//在内的信息全部解析为pathname

url.parse(url, boolean, boolean)

os模块

方法 描述
totalmem 内存总量
freemem 可用内存
cpus 放回一个对象,存储cpu信息
platform 操作系统
type 系统类型

你可能感兴趣的:(node)