Node.js readline模块与util模块的使用

Node.js中的readline模块和util模块是常见的核心模块,用于处理控制台输入输出和各种工具函数的使用,我们通常会在Node.js CLI程序中使用到它们,接下来我将为您介绍它们的使用方法。

readline模块的使用

readline模块提供了一些实用工具,可以从流中读取数据,读取过程是逐行进行的,通常读取标准输入流中的数据。下面是readline模块的使用流程:

步骤1:引入readline模块

const readline = require('readline');

步骤2:创建readline实例

const rl = readline.createInterface({
    input: process.stdin, // 输入流
    output: process.stdout // 输出流
});

在这里,我们用process.stdin定义输入流,用process.stdout定义输出流,这样的好处是可以直接输出提示信息,而不必自己处理流的读写。

步骤3:读取控制台的输入

rl.question('What is your name? ', (answer) => {
    console.log(`Hello, ${answer}!`);
    rl.close();
});

rl.question()方法可以从控制台读取用户输入。在读取到输入后,它会执行回调函数,并将输入的结果作为回调函数的第一个参数传递。

示例1:一个简单的控制台交互程序

以下示例展示了如何使用readline模块在控制台与用户进行交互。代码实现的功能是:读取用户的姓名和年龄,然后输出这些信息。

const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

rl.question('What is your name? ', (name) => {
    rl.question('How old are you? ', (age) => {
        console.log(`${name} is ${age} years old.`);
        rl.close();
    });
});

示例2:从文件中逐行读取数据

以下示例展示了如何使用readline模块从一个文件中逐行读取数据并输出。

const readline = require('readline');
const fs = require('fs');

const rl = readline.createInterface({
    input: fs.createReadStream('example.txt')
});

rl.on('line', (line) => {
    console.log(`Line from file: ${line}`);
});

在这里,我们使用了fs.createReadStream()方法创建了一个读取当前目录下的example.txt文件的可读流,然后传递给readline.createInterface()方法,由此建立了一个基于文件的逐行读取器。每当读取到一行数据,就会执行回调函数,并将读取的行字符串传递给它。

util模块的使用

util模块提供了很多实用工具函数,这些函数都是Node.js核心模块提供的,可以帮助我们更方便地编写JavaScript代码。下面是util模块的使用流程:

步骤1:引入util模块

const util = require('util');

步骤2:使用util模块中的工具函数

例如,我们可以使用util.format()函数将字符串格式化为一个新的字符串:

const util = require('util');
const message = util.format('Hello, %s!', 'world');
console.log(message); // Hello, world!

该函数的第一个参数是要格式化的字符串,后面的参数是要插入到字符串中的内容,返回的结果是一个新的格式化后的字符串。

示例1:继承原型链

以下示例展示了如何使用util模块中的util.inherits()函数实现原型链继承。

const util = require('util');

function Animal() {}

Animal.prototype.say = function() {
    console.log('The animal is saying something...');
};

function Cat() {}

util.inherits(Cat, Animal);

Cat.prototype.say = function() {
    console.log('Meow Meow~');
};

const cat = new Cat();
cat.say(); // Meow Meow~

在这里,我们首先定义了一个Animal构造函数和一个Cat构造函数,然后通过util.inherits()函数将Cat的原型链连接到Animal的原型链上,这样Cat实例就可以继承Animal原型链上的方法。接着我们给Cat添加一个say()方法,在这个方法内部打印出“Meow Meow~”字符串。最后我们创建一个Cat实例调用say()方法输出结果。

示例2:将一个函数封装为异步函数

以下示例展示了如何将一个普通函数封装为异步函数,使它能够支持Promise。

const util = require('util');

function readFile(path, callback) {
    const fs = require('fs');
    fs.readFile(path, (err, data) => {
        callback(err, data);
    });
}

const readFilePromise = util.promisify(readFile);

readFilePromise('example.txt')
    .then((data) => {
        console.log(data);
    })
    .catch((err) => {
        console.log(err);
    });

在这里,我们定义了一个readFile()函数,这个函数接受一个文件路径作为参数,在读取文件后执行回调函数,并将读取的数据作为回调函数的第二个参数传递。然后我们使用util.promisify()函数将这个函数封装为一个Promise函数,所以我们可以使用then()catch()方法来进行异步编程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Node.js readline模块与util模块的使用 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • Puppeteer 爬取动态生成的网页实战

    Puppeteer 爬取动态生成的网页实战攻略 介绍 Puppeteer 是一个由 Google 开源的 Node.js 库,它提供了一个高级的 API 来与 headless Chrome 进行交互。Puppeteer 可以模拟用户的交互行为,并且可以获取网页中动态生成的内容,非常适合用来做爬虫。 步骤 1. 安装 Puppeteer 在安装 Puppet…

    node js 2023年6月8日
    00
  • NodeJS实现单点登录原理解析

    NodeJS实现单点登录原理解析 单点登录(Single Sign On,简称SSO)是一种身份验证机制,在多个应用程序中使用同一组凭证来验证用户的身份。这种机制可以极大地提高用户的使用体验,并减少用户需要输入凭证的次数。 在NodeJS中实现SSO可以使用如下步骤: 1. 应用注册 在SSO系统中,需要有一个应用注册中心,用于记录每个应用程序的信息,包括应…

    node js 2023年6月8日
    00
  • node.js 如何监视文件变化

    当我们在开发某个项目时,有时候需要实时监听某个文件或者文件夹的变化,比方说我们的样式文件、前后端模板文件、配置文件等等,这时候就需要用到 Node.js 提供的 fs 模块来实现文件的监视操作。 文件监视意味着,当文件或目录中的内容发生变化时,我们可以立即得到通知,从而进行相应的操作。Node.js 为此提供了 fs.watch() 和 fs.watchFi…

    node js 2023年6月8日
    00
  • 浅谈node.js 命令行工具(cli)

    浅谈Node.js命令行工具(CLI) 什么是命令行工具? 命令行工具(Command-Line Interface, CLI)是一种用户和计算机交互的方式。用户通过在终端中输入命令,计算机根据命令执行相应的操作。命令行工具通常用于自动化任务和批量处理工作。 Node.js命令行工具介绍 Node.js是一个可以在服务器端运行的JavaScript运行环境。…

    node js 2023年6月8日
    00
  • node.js文件系统模块和两个重要模块

    我来为你讲解Node.js文件系统模块和两个重要模块的相关知识。 什么是Node.js文件系统模块? 在Node.js中,文件系统模块(fs模块)是一个用于处理计算机文件系统的模块。它允许我们读取和写入文件、创建新文件、修改现有文件等等。fs模块是Node.js的内置模块,无需安装即可使用。 以下是文件系统模块提供的一些方法: fs.readFile(fil…

    node js 2023年6月8日
    00
  • node.js中的fs.lstatSync方法使用说明

    来讲一下“node.js中的fs.lstatSync方法使用说明”的完整攻略。 简介 node.js中的fs模块提供了很多API用于文件系统操作,其中fs.lstatSync方法是以同步的方式检索文件或目录的基本信息的。lstatSync方法返回一个包含文件信息的对象,包括文件类型、大小、创建修改时间等等。 语法 const fs = require(‘fs…

    node js 2023年6月8日
    00
  • npm出现Cannot find module ‘XXX\node_modules\npm\bin\npm-cli.js’错误的解决方法

    当我们使用/安装Node.js时,经常会用到一个著名的Node.js包管理器——npm。然而,在使用npm时,有时会出现“Cannot find module ‘XXX\node_modules\npm\bin\npm-cli.js’”的错误,这可能会非常影响我们的工作。下面是解决方法的攻略: 问题分析 首先,我们需要了解出现这个错误的原因。这个错误通常是由…

    node js 2023年6月8日
    00
  • node+vue前后端分离实现登录时使用图片验证码功能

    一、前言 前后端分离的应用现在越来越普及,如何实现前后端分离并且实现一些常见的功能逐渐成为一个必须要掌握的技能。 其中注册和登录是所有网站必备的功能。而且在现在的互联网环境中,为了防止恶意攻击等一些非法行为,很多站点都会在登录时使用验证码的方式进行验证。 那么,在本篇文章中,我们就来详细讲解一下如何在node和vue的前后端分离项目中实现登录时使用图片验证码…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部