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个空位置

 

posted @ 2019-05-17 15:17  cecelia  阅读(86)  评论(0)    收藏  举报