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

yizhihongxing

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日

相关文章

  • NodeJS 实现多语言的示例代码

    这里提供的多语言实现方案是基于Node.js平台的web应用程序,其具体实现可分为以下几个部分。 1. 多语言模块选型 Node.js平台的多语言模块推荐选用i18next模块。i18next是一个非常流行的i18n(国际化)框架,它支持多种语言,提供了各种特性和插件如数据格式化等,非常易于使用。该模块可通过npm安装: npm install i18nex…

    node js 2023年6月8日
    00
  • Node.js 文件夹目录结构创建实例代码

    下面是详细讲解“Node.js 文件夹目录结构创建实例代码”的完整攻略: 1. 基本概念 在开始创建文件夹目录结构之前,先来了解一下Node.js中常用的一些模块和概念: fs模块:用于对文件系统进行操作,例如创建目录、创建文件、读取文件、删除文件等操作; path模块:用于处理文件路径,例如获取文件名、文件扩展名、完整路径等操作; module.expor…

    node js 2023年6月8日
    00
  • Activity/Fragment结束时处理异步回调的解决方案

    处理异步回调是 Android 开发中的一个常见问题,尤其是在 Activity 或 Fragment 结束时。因为异步回调可能会持有 Activity 或 Fragment 的引用,导致内存泄漏等问题。以下是一组解决方案,建议根据具体情况选择。 方案一:使用 WeakReference 在 Activity 或 Fragment 中使用 WeakRefer…

    node js 2023年6月8日
    00
  • Vue.js3.2的vnode部分优化升级使用示例详解

    Vue.js3.2的vnode部分优化升级使用示例详解 简介 在Vue.js 3.2版本中,vnode相关的部分进行了优化升级。利用这些更新,可以优化Vue.js的性能表现。本文将详细讲解Vue.js的vnode优化升级,并提供几个使用示例。 vnode优化升级 在Vue.js 3.2版本中,vnode的处理更快。它现在可以将创建新vnode所需的时间降低了…

    node js 2023年6月8日
    00
  • nodejs 使用 js 模块的方法实例详解

    介绍如何在node.js中使用js模块,以下是详细的攻略: 1. js模块的引入 在node.js中,通常使用require语句来引入js模块。 require语句的格式如下: var module = require(‘module_name’); 其中,module_name是需要引入的js模块的名称路径。如果是自己创建的模块,可以使用相对路径名称来引用…

    node js 2023年6月8日
    00
  • 用Nodejs搭建服务器访问html、css、JS等静态资源文件

    下面是用Nodejs搭建服务器访问静态资源文件的完整攻略。 1. 安装Node.js 首先,你需要安装Node.js。可以从Node.js官网下载。安装完成后,可在命令行输入以下命令验证是否安装成功: node -v 2. 创建项目文件夹及文件 在任意目录下创建一个文件夹作为项目文件夹,我们在此文件夹内创建以下文件:index.html和app.js。 – …

    node js 2023年6月8日
    00
  • Node.js如何对SQLite的async/await封装详解

    Node.js对SQLite的async/await封装可以帮助开发者更方便地在Node.js应用中使用SQLite数据库,同时也避免了回调地狱的问题。下面将详细介绍Node.js对SQLite的async/await封装的攻略。 1. 安装依赖库 使用Node.js对SQLite进行async/await封装,需要安装以下依赖库:- sqlite3模块:用…

    node js 2023年6月8日
    00
  • npm start运行项目过程package.json字段详解

    下面我来详细讲解如何理解和使用 npm start 命令来启动项目,并深入剖析 package.json 文件中的相关字段。 什么是npm start命令? 在使用 npm 来管理Node.js项目时,我们经常会用到 npm start 命令来启动项目。它的作用实际上就是通过执行 package.json 文件中 “scripts” 对象中的 “start”…

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