【Node系列】node核心模块util

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
注册配置 MSE Nacos/ZooKeeper,118元/月
函数计算FC,每月15万CU 3个月
简介: Node.js的核心模块util为开发者提供了一些常用的实用工具函数。这些函数能够很方便地进行对象的继承、类型判断以及其他工具函数的实现。

一、util介绍

Node.js的核心模块util为开发者提供了一些常用的实用工具函数。这些函数能够很方便地进行对象的继承、类型判断以及其他工具函数的实现。

util模块主要提供了以下几个功能:

  1. 继承函数的封装:util.inherits()函数可以用来实现对象间的原型继承。使用这个函数可以将一个构造函数的原型链中的方法继承到另一个构造函数的原型链中。
  2. 类型判断函数:util模块提供了一些判断数据类型的函数,如util.isArray()用于判断一个对象是否为数组,util.isDate()用于判断一个对象是否为日期对象等。
  3. 错误处理函数:util模块提供了一些处理错误的工具函数,如util.error()用于输出错误信息,util.debug()用于输出调试信息等。
  4. 格式化字符串函数:util模块提供了util.format()函数,类似于C语言中的sprintf函数,用于格式化字符串。通过这个函数可以将多个参数格式化为一个字符串。
  5. 其他工具函数:util模块还提供了一些其他实用的函数,如util.inspect()用于将对象转换为字符串,util.promisify()用于将一个返回回调函数的异步函数转换为返回Promise的函数等。

使用util模块可以让开发者更方便地处理一些常见的问题,提高编程效率。但需要注意的是,util模块中的一些函数在实际的应用中可能会有一些性能问题,因此在需要时需要谨慎使用。

二、util模块函数

Node.js 的 util 模块提供了一系列有用的工具函数,用于处理常见的任务。

const util = require('util');

以下是一些常用的 util 模块函数:

  1. util.inspect(): 这个函数返回一个字符串,用于将一个值以可读的格式打印出来。它通常用于调试和日志记录。
var util = require('util'); 
function Person() {
    
    this.name = 'byvoid'; 
    this.toString = function() {
    
    return this.name; 
    }; 
} 
var obj = new Person(); 
console.log(util.inspect(obj)); 
console.log(util.inspect(obj, true));
  1. util.isArray()util.isBuffer()util.isDate(): 这些函数用于检查一个值是否是特定的类型。
const util = require('util');
console.log(util.isArray([])); // 输出 true
console.log(util.isBuffer(Buffer.from('hello'))); // 输出 true
console.log(util.isDate(new Date())); // 输出 true
  1. util.format(): 这个函数用于格式化字符串,类似于 Python 的 str.format() 方法。
const util = require('util');
console.log(util.format('Hello, %s!', 'world')); // 输出 "Hello, world!"
  1. util.debuglog(): 这个函数可以创建一个函数,该函数在控制台输出日志,同时包含有关该日志条目的源代码的文件名和行号。这对于调试大型应用程序非常有用。
  2. util.deprecate(): 这个函数用于标记某个功能已被弃用,通常是为了引导开发者使用更新的、更安全或更有效的功能。
  3. util.callbackify(): 这个函数将一个 promise 转换为一个 Node.js 回调函数,这使得它更容易与期望回调的 API 集成。
const util = require('util');

async function fn() {
   
  return 'hello world';
}
const callbackFunction = util.callbackify(fn);

callbackFunction((err, ret) => {
   
  if (err) throw err;
  console.log(ret);
});
  1. util.promisify(): 这个函数将一个使用回调的函数转换为返回 Promise 的函数,这使得它更容易在异步函数中使用 async/await
  2. util.callbackify()util.promisify():这两个函数通常一起使用,以将一个传统的回调风格 API 转换为现代的基于 Promise 的 API。
  3. util.isRegExp(object) `给定的参数 "object" 是一个正则表达式返回true,否则返回false
var util = require('util');

util.isRegExp(/some regexp/)
  // true
util.isRegExp(new RegExp('another regexp'))
  // true
util.isRegExp({
   })
  // false
  1. util.inherits(constructor, superConstructor) 是一个实现对象间原型继承的函数
var util = require('util'); 
function Base() {
    
    this.name = 'base'; 
    this.base = 1991; 
    this.sayHello = function() {
    
    console.log('Hello ' + this.name); 
    }; 
} 
Base.prototype.showName = function() {
    
    console.log(this.name);
}; 
function Sub() {
    
    this.name = 'sub'; 
} 
util.inherits(Sub, Base); 
var objBase = new Base(); 
objBase.showName(); 
objBase.sayHello(); 
console.log(objBase); 
var objSub = new Sub(); 
objSub.showName(); 
//objSub.sayHello(); 
console.log(objSub);

三、node介绍

Node.js是一个基于Chrome V8引擎的JavaScript运行环境,可以用于构建高性能的网络应用程序。它采用事件驱动、非阻塞I/O模型,使得程序可以以高效地方式处理并发请求。

Node.js的特点包括:

  1. 单线程:Node.js采用单线程模型,使用事件循环来处理并发请求。这意味着它可以高效地处理大量的并发请求,而不会因为线程切换而产生开销。
  2. 非阻塞I/O:Node.js使用非阻塞I/O模型,可以在进行I/O操作时继续处理其他请求,而不需要等待I/O操作完成。这使得Node.js非常适合处理高并发的网络应用程序。
  3. 异步编程:Node.js采用异步编程模式,可以使用回调函数来处理异步操作的结果。这使得开发者可以编写简洁、可读性强的代码,同时可以更好地利用系统资源。
  4. 轻量级:Node.js是一个轻量级的运行环境,所需的资源较少,并且可以快速启动。这使得它非常适合部署在云服务器等资源有限的环境中。
  5. 前后端一体化:Node.js可以用于开发前端和后端的代码,使得前后端可以共享相同的语言和模块。这样可以简化开发流程,并提高开发效率。

Node.js的应用场景包括:

  1. Web应用程序:Node.js可以用于开发高性能的Web应用程序,如实时聊天应用、实时协作工具等。
  2. RESTful API服务:Node.js可以用于开发高性能的API服务,提供数据和功能的接口。
  3. 实时数据应用程序:Node.js可以用于开发实时数据应用程序,如实时数据分析、实时监控等。
  4. 游戏后台服务器:Node.js可以用于开发游戏后台服务器,处理大量的并发请求。

Node.js是一个功能强大、高性能的JavaScript运行环境,适用于开发各种类型的网络应用程序。它的优势在于高并发处理能力、高效的I/O操作、简洁的异步编程模型,以及与前端一体化等特点。

四、热门文章推荐

  1. node介绍
  2. npm详细安装教程
  3. 【Node系列】文件系统介绍及案例说明
  4. 【Node系列】创建第一个服务器应用
  5. 【Node系列】REPL详解
  6. 【Node系列】回调函数/事件循环
  7. 【Node系列】EventEmitter详解
相关文章
|
11天前
|
JavaScript 前端开发
Vue、ElementUI配合Node、multiparty模块实现图片上传并反显_小demo
如何使用Vue和Element UI配合Node.js及multiparty模块实现图片上传并反显的功能,包括前端的Element UI组件配置和后端的Node.js服务端代码实现。
14 1
Vue、ElementUI配合Node、multiparty模块实现图片上传并反显_小demo
|
4月前
|
缓存 JSON JavaScript
Node.js模块系统
Node.js模块系统
29 1
|
2月前
|
存储 缓存 JSON
Node.js有哪些模块系统
【8月更文挑战第12天】Node.js有哪些模块系统
35 3
|
2月前
[译] Node 模块中的 peer dependencies 是什么?
[译] Node 模块中的 peer dependencies 是什么?
|
3月前
|
存储 JavaScript 安全
Node中的AsyncLocalStorage 使用问题之AsyncLocalStorage与node:async_hooks模块的问题如何解决
Node中的AsyncLocalStorage 使用问题之AsyncLocalStorage与node:async_hooks模块的问题如何解决
|
2月前
|
存储 JavaScript 前端开发
nodejs os模块
nodejs os模块
30 0
|
3月前
|
JavaScript 前端开发
node.js 导入导出模块(CommonJS模块化规范,ES6模块化规范)
node.js 导入导出模块(CommonJS模块化规范,ES6模块化规范)
40 1
|
3月前
|
存储 JavaScript 前端开发
Node中的AsyncLocalStorage 使用问题之async_wrap 模块是如何与 libuv 交互的
Node中的AsyncLocalStorage 使用问题之async_wrap 模块是如何与 libuv 交互的
|
3月前
|
监控 JavaScript 前端开发
Node中的AsyncLocalStorage 使用问题之Node.js内部模块和外部模块的加载的问题如何解决
Node中的AsyncLocalStorage 使用问题之Node.js内部模块和外部模块的加载的问题如何解决
|
3月前
|
资源调度 前端开发 开发工具
阿里云云效操作报错合集之Node-Sass模块在构建过程中,出现报错"ENOENT: no such file or directory, scandir ",该如何处理
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。