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

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

生成完毕

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

相关文章
|
5天前
|
JavaScript 前端开发 测试技术
探索现代JavaScript开发的最佳实践
本文探讨了现代JavaScript开发中的最佳实践,涵盖ES6+特性、现代框架使用、模块化与代码分割、测试驱动开发、代码质量与性能优化、异步编程、SPA与MPA架构选择、服务端渲染和静态站点生成等内容,旨在帮助开发者提升代码质量和开发效率。
|
9天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第36天】本文将引导您探索Node.js的世界,通过实际案例揭示其背后的原理和实践方法。从基础的安装到高级的异步处理,我们将一起构建一个简单的后端服务,并讨论如何优化性能。无论您是新手还是有经验的开发者,这篇文章都将为您提供新的视角和深入的理解。
|
14天前
|
Web App开发 存储 JavaScript
深入浅出Node.js后端开发
【10月更文挑战第31天】本文将引导你进入Node.js的奇妙世界,探索其如何革新后端开发。通过浅显易懂的语言和实际代码示例,我们将一起学习Node.js的核心概念、搭建开发环境,以及实现一个简单但完整的Web应用。无论你是编程新手还是希望拓展技术的开发者,这篇文章都将为你打开一扇通往高效后端开发的大门。
|
10天前
|
运维 监控 JavaScript
鸿蒙next版开发:分析JS Crash(进程崩溃)
在HarmonyOS 5.0中,JS Crash指未处理的JavaScript异常导致应用意外退出。本文详细介绍如何分析JS Crash,包括异常捕获、日志分析和典型案例,帮助开发者定位问题、修复错误,提升应用稳定性。通过DevEco Studio收集日志,结合HiChecker工具,有效解决JS Crash问题。
29 4
|
15天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第30天】本文将通过一个Node.js的简单示例,引导你进入Node.js的世界。我们将从基础概念讲起,然后一步步深入到代码实现,最后总结Node.js在后端开发中的优势和应用场景。无论你是前端开发者还是后端新手,这篇文章都将为你打开一扇了解Node.js的大门。
29 2
|
23天前
|
开发框架 JavaScript 前端开发
HarmonyOS UI开发:掌握ArkUI(包括Java UI和JS UI)进行界面开发
【10月更文挑战第22天】随着科技发展,操作系统呈现多元化趋势。华为推出的HarmonyOS以其全场景、多设备特性备受关注。本文介绍HarmonyOS的UI开发框架ArkUI,探讨Java UI和JS UI两种开发方式。Java UI适合复杂界面开发,性能较高;JS UI适合快速开发简单界面,跨平台性好。掌握ArkUI可高效打造符合用户需求的界面。
76 8
|
21天前
|
JavaScript 前端开发
javascript开发的简单的弹幕插件
这是一个原生javascript开发的简单的弹幕插件,具有美观、易用,占用的资源较低等特点,可以给弹幕设置内容、颜色、头像、链接地址等属性,鼠标悬停等,简单实用,欢迎下载!
37 5
|
27天前
|
JavaScript 测试技术 API
跟随通义灵码一步步升级vue2(js)项目到vue3版本
Vue 3 相较于 Vue 2 在性能、特性和开发体验上都有显著提升。本文介绍了如何利用通义灵码逐步将 Vue 2 项目升级到 Vue 3,包括备份项目、了解新特性、选择升级方式、升级依赖、迁移组件和全局 API、调整测试代码等步骤,并提供了注意事项和常见问题的解决方案。
|
10天前
|
JavaScript Linux iOS开发
详解如何实现自由切换Node.js版本
不同的项目中需要使用不同版本的 Node.js,有时旧项目需要旧版本,而新项目则可能依赖最新的 Node.js 版本
|
12天前
|
Web App开发 JavaScript 前端开发
探索后端开发:Node.js与Express的完美结合
【10月更文挑战第33天】本文将带领读者深入了解Node.js和Express的强强联手,通过实际案例揭示它们如何简化后端开发流程,提升应用性能。我们将一起探索这两个技术的核心概念、优势以及它们如何共同作用于现代Web开发中。准备好,让我们一起开启这场技术之旅!
28 0