如何理解node.js中Util模块作用(node.js,util,开发技术)

时间:2024-05-02 13:14:31 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    %E5%A6%82%E4%BD%95%E7%90%86%E8%A7%A3node.js%E4%B8%ADUtil%E6%A8%A1%E5%9D%97%E4%BD%9C%E7%94%A8

在 JavaScript 中,进行变量的类型校验是一个非常令人头疼的事,如果只是简单的使用typeof会到各种各样的问题。

举几个简单的:

后来,大家发现可以使用Object.prototype.toString()方法来进行变量类型的判断。

toString()方法进行代理,可以得到一个类型字符串,我们就可以在这个字符串上面搞事情。

But,在 Node.js 中,内部其实是有一组用来判断变量类型的 api 的。而且功能异常丰富,除了基础类型的判断,还支持判断 Promise 对象、Date 对象、各种ArrayBuffer。

在 JavaScript 中,对象、数组等变量在判断相等的过程中,如果用===通常只会判断这两个变量是否指向同一内存地址。如果想判断对象的键对应的所有值是否相等,需要对两个对象进行遍历。在util中,也提供了一个方法可以用来判断两个对象是否严格相等:util.isDeepStrictEqual(val1, val2)

该方法同样可以用来判断数组,是否严格相等:

早期的 Node API 都是Error First风格的,也就是所有的异步函数都会接受一个回调函数,该回调的一个参数为 error 对象,如果正常返回 error 对象为null,后面的参数为成功响应的结果。

在 Node 8 发布的时候,新增了一个promisify接口,用于将Error First风格的 API 转为 Promise API。

不过,后来也有很多人觉得这些原生 API 支持 Promise 的方式太过繁琐,每个 API 都需要单独的包装一层promisify方法。在 Node 10 发布的时候,原生模块都新增了一个.promises属性,该属性下的所有 API 都 Promise 风格的。

注意:Node 14 后,promisesAPI 又新增了一种引入方式,通过修改包名的方式引入。

除了将Error First风格的 API 转为 Promise API,util中还提供callbackify方法,用于将async函数转换为Error First风格的函数。

下面通过callbackify将 promise 化的fs还原为Error First风格的函数。

如果有开发过 Node 服务,应该都用过debug模块,通过该模块可以在控制台看到更加明晰的调试信息。

其实,通过util.debug也能实现类似的效果:

只是在启动时,需要将DEBUG环境变量替换为NODE_DEBUG

如果你有认真看上面的代码,应该会发现,在log('当前用户: %o', user)方法前面的字符串中,有一个%o占位符,表示这个地方将会填充一个对象(object)。这与 C 语言或 python 中的,printf类似。同样,在util模块中,直接提供了格式化的方法:util.format

除了%o占位符,不同的数据类型应使用不同的占位符。

JavaScript 中的对象是一个很复杂的东西,除了直接使用util.format外加%o占位符的方式格式化对象,util中还提供了一个叫做inspect方法来进行对象格式化。

这么看inspect好像什么都没做,但是inspect方法还有第二个参数,用来进行格式化时的一些个性化配置。

depth: number:控制显示层级;

sorted: boolean|Function: 是否按照key的编码值进行排序;

compact: boolean:是否进行单行显示;

当然上面只是一部分配置,更详细的配置可查阅 node 文档,下面我们写几个案例:

所有的属性都换行显示:

只格式化对象第一层的值:

按照key值的编码倒序输出:

本文:如何理解node.js中Util模块作用的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:PHP垃圾回收及内存管理相关内容有哪些下一篇:

2 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18