node api 笔记(一)
nodejs是JavaScript 运行时环境。(没有DOM和BOM)
特性: 事件驱动,非阻塞IO模型(异步),高效轻量。
npm:可以方便地下载JavaScript相关的包。
nodejs用于:web服务后台
--------------------------------------------------------------
1. path: normalize(), join(), resolve(), basename(), dirname(), extname(), parse(), format(), sep, delimiter
__dirname, __filename 当前文件的绝对路径
process.cwd() 执行node命令所在的文件夹
./ require命令中,相对于当前文件所在的文件夹;其他情况下,同process.cwd()
../ require命令中,相对于当前文件的上一级文件夹
2. Buffer: 用于处理二进制数据流; 类似于整数数组,但是其大小是固定的; V8 堆外部的固定大小的原始内存分配
全部变量,不需要require
// 初始化申请内存为10个的buffer,默认填充0 console.log(Buffer.alloc(10)) // 默认填充2 console.log(Buffer.alloc(8,2)) // 申请了,但未初始化,可能一开始有内容了 console.log(Buffer.allocUnsafe(4)) // 由数组创建buffer console.log(Buffer.from([1,2,3])) // 由字符串创建buffer console.log(Buffer.from('test')) // 制定编码方式 console.log(Buffer.from('test','base64'))

Buffer类方法
1) Buffer.isBuffer()
console.log(Buffer.isBuffer({}));
console.log(Buffer.isBuffer(Buffer.from([1,3,4])));
// false
// true
2) Buffer.concat()
console.log(Buffer.byteLength('test'));
console.log(Buffer.byteLength('测试'));
//4
//6 (一个汉字占3个字节)
3) Buffer.byteLength()
const buf1 = Buffer.from('This ');
const buf2 = Buffer.from('is ');
const buf3 = Buffer.from('a ');
const buf4 = Buffer.from('cat');
const buf = Buffer.concat([buf1, buf2, buf3, buf4])
console.log(buf.toString())
// This is a cat
buf方法length, toString(), fill()
const buf = Buffer.allocUnsafe(10); buf.fill(10,2,5); console.log(buf)
equals()比较内容是否相同
const buf1 = Buffer.from('test');
const buf2 = Buffer.from('test');
const buf3 = Buffer.from('test.');
console.log(buf1.equals(buf2));
console.log(buf2.equals(buf3));
//true
//false
indexOf(), lastIndexOf()
console.log(buf1.indexOf('es'));
console.log(buf1.indexOf('esa'));
// 1
// -1
buf.copy()
const StringDecoder = require('string_decoder').StringDecoder;
const string_decoder = new StringDecoder('utf8');
const buf1 = Buffer.from('中文文字');
for (let i = 0; i < buf1.length ;i += 5) {
const b = Buffer.allocUnsafe(5);
buf1.copy(b, 0, i);
console.log(string_decoder.write(b));
}
中 // (5个里面,3个为一个汉字)
文文 //(第一次剩余的两个与第二次的5个,共7个,可输出2个(2*3)汉字
字��� //(第二次剩余的一个与第三个的5个,共6个,输出1个汉字,加3个空位置

浙公网安备 33010602011771号