基于node.js开发的文章生成器(四、控制台版本的文章生成器)

简介: > 持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,[点击查看活动详情](https://juejin.cn/post/7147654075599978532 "https://juejin.cn/post/7147654075599978532")# 引言通过前面的学习,随机句子的选取,段落的生成,文章的生成,我们都已经学会了。接下来我们本次来学习控制台版的狗屁不通文章生成器。# readline模块的学习与尝试接下来我们来学习并练习使用readline模块。readline模块是node7之后便开始提供的模块。接下来我们来详细说说这个模块#
持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天, 点击查看活动详情

引言

通过前面的学习,随机句子的选取,段落的生成,文章的生成,我们都已经学会了。接下来我们本次来学习控制台版的狗屁不通文章生成器。

readline模块的学习与尝试

接下来我们来学习并练习使用readline模块。readline模块是node7之后便开始提供的模块。

接下来我们来详细说说这个模块

导入

前面已经说过了,我们这个项目整体采用 ES Moudle的模式 所以我们导入上这样导入

import ReadLine from 'readline';

创建readline

我们通过ReadLine.createInterface()来创建readline

详细代码如下:

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

因为涉及到控制台的输入输出,我们还要需要process模块中的stdin和stdout.

接下来我们就可以使用readline的内部函数来进行控制台交互了

交互的实例

看下面的代码:

import { stdin, stdout } from 'process';
import ReadLine from 'readline';

const readline = ReadLine.createInterface({
    input:stdin,
    output:stdout
})

readline.question('今天吃了什么?',eatWhat=>{
    console.log(`吃了${eatWhat}`);
    readline.close();
})

因为要用到process.stdin和process.stdout所以上面代码中我直接通过import引入了process然后直接用stdin和stdout了,从一定程度上减少了代码量。

在控制台中输入 node cs,js

结果如下:

今天吃了什么?蛋炒饭

吃了蛋炒饭

控制台版本的index.js代码

import fs from 'fs';
import {fileURLToPath} from 'url';
import path from 'path';
import {articleCreate} from '../lib/article.js';
import  ReadLine  from 'readline';

const fileURL = import.meta.url;
const pathURL = fileURLToPath(fileURL);
const dirname = path.resolve(pathURL,"../");
const filePath = path.resolve(dirname,"../","resources/data.json");
fs.readFile(filePath,{encoding:"utf-8"},(err,dataStr)=>{
    if(err){
        console.log(err);
    }
    else{
        const data = JSON.parse(dataStr);
        const readline = ReadLine.createInterface({
            input:process.stdin,
            output:process.stdout
        });
        console.log('欢迎使用文章生成器');
        readline.question('请问要生成的文章的标题:',title=>{
            let t = title;
            readline.question('请问要生成的文章字数',Num=>{
                const article = articleCreate(t,{data},Num);
                console.log(article[0]);
                readline.close();
                console.log('生成完毕');
            })
        })
    }
})

还是常规的获取url,fs读取data.json然后这里通过readline来获取三个参数中的标题和字数,获取完最后一个字数的参数后,关闭readline。这里通过嵌套的方式完成两个参数的输入。

在控制台执行node src/index.js

结果如下:

欢迎使用文章生成器

请问要生成的文章的标题:今天吃什么

请问要生成的文章字数100

今天吃什么的发生,到底需要如何做到,不今天吃什么的发生,又会如何产生。 我认为,
今天吃什么,到底应该如何实现。 既然如此,今天吃什么,到底应该如何实现。 今天吃
什么,到底应该如何实现。 我认为,今天吃什么,到底应该如何实现。 今天吃什么,到
底应该如何实现。 培根说过,深窥自己的心,而后发觉一切的奇迹在你自己。这不禁令我
深思。 今天吃什么,到底应该如何实现。 今天吃什么,到底应该如何实现。 培根说过,
深窥自己的心,而后发觉一切的奇迹在你自己。这启发了我。我认为,今天吃什么,到底
应该如何实现。 今天吃什么,到底应该如何实现。 今天吃什么,到底应该如何实现。 今
天吃什么,到底应该如何实现。 今天吃什么,到底应该如何实现。 培根说过,深窥自己
的心,而后发觉一切的奇迹在你自己。这启发了我。

生成完毕

控制台版本的狗屁不通文章生成器就告一段落了,下一部分开始更新网页版的文章生成器。

相关文章
|
9天前
|
JavaScript 前端开发 NoSQL
使用Node.js进行后端开发入门
【8月更文挑战第10天】恭喜你完成了Node.js后端开发的入门之旅!这只是个开始,Node.js的世界远比这广阔。随着你对Node.js的深入学习和实践,你将能够构建更复杂、更强大的后端应用。不断探索、学习和实践,你将在Node.js的道路上越走越远。
|
20天前
|
JavaScript NoSQL Serverless
函数计算产品使用问题之如何创建一个自定义运行时并指定Node.js版本
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
20天前
|
JavaScript API 调度
深入理解Node.js事件循环及其在后端开发中的应用
【7月更文挑战第30天】本文旨在通过深入浅出的方式,解析Node.js事件循环机制的工作原理及其在后端开发中的实际应用。我们将从事件循环的基本概念出发,逐步探讨其与异步I/O操作的关系,以及如何利用事件循环优化后端性能和处理高并发请求。文章将结合实际案例,为读者提供清晰的认识和应用策略。
|
10天前
|
缓存 JavaScript 前端开发
微信 JS-SDK Demo “分享信息设置” API 及数字签名生成方法(NodeJS版本)
微信 JS-SDK Demo “分享信息设置” API 及数字签名生成方法(NodeJS版本)更新时间(2020-10-29)
|
1月前
|
JavaScript Ubuntu Shell
Ubuntu上安装任意版本nodejs方法
通过以上步骤,您可以在Ubuntu系统上灵活地安装和管理不同版本的Node.js。这种方法让开发者能够根据不同项目的需要选择合适的Node.js版本,同时也使版本切换变得非常方便。而且,nvm能够为每个项目独立管理依赖,从而确保不同项目之间的环境隔离,增强了开发环境的稳定性和可维护性。
306 2
|
1月前
|
JavaScript
Vue如何查看node版本---- package.json 文件中的 engines
Vue如何查看node版本---- package.json 文件中的 engines
|
1月前
|
JavaScript
JS字符串数据类型转换,字符串如何转成变量,+号只要有一个是字符串,就会把另外一个转成字符串,- * / 都会把数据转成数字类型,数字型控制台是蓝色,字符型控制台是黑色,
JS字符串数据类型转换,字符串如何转成变量,+号只要有一个是字符串,就会把另外一个转成字符串,- * / 都会把数据转成数字类型,数字型控制台是蓝色,字符型控制台是黑色,
|
1月前
|
开发框架 监控 JavaScript
企业级node.js开发框架 【egg.js】 实用教程
企业级node.js开发框架 【egg.js】 实用教程
23 0
|
1月前
|
Web App开发 JavaScript 前端开发
js 调试—— 【控制台】debugger语句 、 命令行API
js 调试—— 【控制台】debugger语句 、 命令行API
51 0
|
3月前
|
Java
java实战项目超市管理系统控制台版
java实战项目超市管理系统控制台版