node学习历程

node记录

assert:

assert 模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。
assert.equal(1,1);  		true
assert.equal(1,'1');    	true   
	equal是  ==
assert.strictEqual(1,1);   true
assert.strictEqual(1,'1');   false  
	strictEqual是  ===
	assert.deepEqual()和assert.deepStrictEqual()的区别和上面相同 
	也就是说  strict是严格模式
	
	equal和deepEqual的区别在于  前者适合比较一些简单的数字  和 字符串又或者是 简单的一维数组
	但是后者更多的是对于  复杂的二维数组或者更多  又或者json数据进行的比较
	
aeesrt(true,'我是assert,如果前面是true,则不返回内容,如果为false则返回报错,大概格式如下')
作用等同于
assert.ok(true,'我是assert,如果前面是true,则不返回内容,如果为false则返回报错,大概格式如下')

在这里插入图片描述
返回的直接是一个object,可以通过点直接获取里面的内容

assert.doesNotReject(block, error)
该函数相当于 assert.doesNotThrow(),除了需要等待完成的异步特性。
等待 block 的 promise 完成,如果 block 是一个函数,则立即调用该函数并等待返回的 promise 完成,然后检查 promise 是否被 reject。
如果 block 是一个函数且同步地抛出一个错误,则 assert.doesNotReject() 会返回一个被 reject 的 Promise 并传入该错误。 如果该函数没有返回一个 promise,则 assert.doesNotReject() 会返回一个被 reject 的 Promise 并传入 ERR_INVALID_RETURN_VALUE 错误。 以上两种情况都会跳过错误处理函数。

assert.doesNotThrow(block, error)

断言 block 函数不会抛出错误。
当 assert.doesNotThrow() 被调用时,它会立即调用 block 函数。
如果抛出错误且错误类型与 error 参数指定的相同,则抛出 AssertionError。 如果错误类型不相同,或 error 参数为 undefined,则抛出错误。

async_hooks

为了实现对异步资源的跟踪,node 对每一个函数(不论异步还是同步)提供了一个 async scope
1.async_hooks.executionAsyncId() 来获取函数当前的 async scope 的 id(称为 asyncId)
2.async_hooks.triggerAsyncId() 来获取当前函数调用者的 asyncId

3.异步资源创建时触发 init 事件函数,init 函数中的第一个参数代表该异步资源的 asyncId,type 表示异步资源的类型(如 TCPWRAP, PROMISE, Timeout, Immediate, TickObject 等等),triggerAsyncId 表示该异步资源的调用者的 asyncId。异步资源销毁时触发 destroy 事件函数,该函数只接收一个参数即该异步资源的 asyncId。

4.最外层作用域的 asyncId 总是 1,每个异步资源创建时 asyncId 全局递增

5.同步函数每次调用的 asyncId 都一样,

Buffer

JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。

在 Node.js 中,Buffer 类是随 Node 内核一起发布的核心库。Buffer 库为 Node.js 带来了一种存储原始数据的方法,可以让 Node.js 处理二进制数据,每当需要在 Node.js 中处理I/O操作中移动的数据时,就有可能使用 Buffer 库。原始数据存储在 Buffer 类的实例中。一个 Buffer 类似于一个整数数组,但它对应于 V8 堆内存之外的一块原始内存。

Buffer 实例一般用于表示编码字符的序列,比如 UTF-8 、 UCS2 、 Base64 、或十六进制编码的数据。 通过使用显式的字符编码,就可以在 Buffer 实例与普通的 JavaScript 字符串之间进行相互转换。

在v6.0以后,官方文档里面建议使用 Buffer.from() 接口去创建Buffer对象。

其中创建Buffer类 有很多种,方法,具体在API中去看

写入缓冲区的语句:
	buf.write(string[, offset[, length]][, encoding])
	
参数描述如下:

string - 写入缓冲区的字符串。

offset - 缓冲区开始写入的索引值,默认为 0 。

length - 写入的字节数,默认为 buffer.length

encoding - 使用的编码。默认为 'utf8' 。

根据 encoding 的字符编码写入 string 到 buf 中的 offset 位置。 length 参数是写入的字节数。 如果 buf 没有足够的空间保存整个字符串,则只会写入 string 的一部分。 只部分解码的字符不会被写入。

返回值
返回实际写入的大小。如果 buffer 空间不足, 则只会写入部分字符串。

实例
buf = Buffer.alloc(256);
len = buf.write("www.runoob.com");

console.log("写入字节数 : "+  len);
执行以上代码,输出结果为:

$node main.js
写入字节数 : 14


读取 Node 缓冲区数据的语法如下所示:

buf.toString([encoding[, start[, end]]])
参数
参数描述如下:

encoding - 使用的编码。默认为 'utf8' 。

start - 指定开始读取的索引位置,默认为 0。

end - 结束位置,默认为缓冲区的末尾。

返回值
解码缓冲区数据并使用指定的编码返回字符串。

实例
buf = Buffer.alloc(26);
for (var i = 0 ; i < 26 ; i++) {
  buf[i] = i + 97;
}

console.log( buf.toString('ascii'));       // 输出: abcdefghijklmnopqrstuvwxyz
console.log( buf.toString('ascii',0,5));   // 输出: abcde
console.log( buf.toString('utf8',0,5));    // 输出: abcde
console.log( buf.toString(undefined,0,5)); // 使用 'utf8' 编码, 并输出: abcde
执行以上代码,输出结果为:

$ node main.js
abcdefghijklmnopqrstuvwxyz
abcde
abcde
abcde

将 Buffer 转换为 JSON 对象
语法
将 Node Buffer 转换为 JSON 对象的函数语法格式如下:

buf.toJSON()

还有一些其他的关于缓冲区的方法。可在http://www.runoob.com/nodejs/nodejs-buffer.html去查

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lar_slw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值