基于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

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

生成完毕

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

相关文章
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
860 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
JavaScript 算法 前端开发
nodejs18版本 npm run dev失败
在使用若依框架运行 `npm run dev` 时,若卡在 95% 并报错,通常是 Node.js 17+ 与 Webpack 的兼容性问题。原因是 OpenSSL 3 的加密算法变化导致依赖冲突。解决方法:Windows 下运行 `set NODE_OPTIONS=--openssl-legacy-provider`,macOS/Linux 使用 `export NODE_OPTIONS=--openssl-legacy-provider`,然后重新启动开发服务即可。此设置让 Node.js 启用旧版加密支持,恢复正常构建流程。
1651 0
Node安装版本低于工程版本时打包绕过校验
在开发中,若本地Node版本低于项目配置要求,导致打包报错(如图所示),可在不变更本地环境的情况下,通过在执行`npm run build`前输入命令`set NODE_OPTIONS=--openssl-legacy-provider`来绕行此问题,确保构建顺利进行。
1234 10
|
Web App开发 JavaScript 前端开发
Node.js开发
Node.js开发
423 13
|
存储 JavaScript 前端开发
深入浅出Node.js后端开发
在数字化时代的浪潮中,后端开发作为连接用户与数据的桥梁,扮演着至关重要的角色。本文将以Node.js为例,深入探讨其背后的哲学思想、核心特性以及在实际项目中的应用,旨在为读者揭示Node.js如何优雅地处理高并发请求,并通过实践案例加深理解。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和思考。
|
Web App开发 开发框架 JavaScript
深入浅出Node.js后端开发
在这篇文章中,我们将一起探索Node.js的奇妙世界。无论你是刚接触后端开发的新手,还是希望深化理解的老手,这篇文章都适合你。我们将从基础概念开始,逐步深入到实际应用,最后通过一个代码示例来巩固所学知识。让我们一起开启这段旅程吧!
|
JavaScript 前端开发 API
深入理解Node.js事件循环及其在后端开发中的应用
本文旨在揭示Node.js的核心特性之一——事件循环,并探讨其对后端开发实践的深远影响。通过剖析事件循环的工作原理和关键组件,我们不仅能够更好地理解Node.js的非阻塞I/O模型,还能学会如何优化我们的后端应用以提高性能和响应能力。文章将结合实例分析事件循环在处理大量并发请求时的优势,以及如何避免常见的编程陷阱,从而为读者提供从理论到实践的全面指导。
|
Web App开发 开发框架 JavaScript
深入浅出Node.js后端开发
本文将带你领略Node.js的魅力,从基础概念到实践应用,一步步深入理解并掌握Node.js在后端开发中的运用。我们将通过实例学习如何搭建一个基本的Web服务,探讨Node.js的事件驱动和非阻塞I/O模型,以及如何利用其强大的生态系统进行高效的后端开发。无论你是前端开发者还是后端新手,这篇文章都会为你打开一扇通往全栈开发的大门。