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

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

生成完毕

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

相关文章
|
21天前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
402 1
|
3天前
|
Web App开发 存储 JavaScript
深入浅出Node.js后端开发
【10月更文挑战第31天】本文将引导你进入Node.js的奇妙世界,探索其如何革新后端开发。通过浅显易懂的语言和实际代码示例,我们将一起学习Node.js的核心概念、搭建开发环境,以及实现一个简单但完整的Web应用。无论你是编程新手还是希望拓展技术的开发者,这篇文章都将为你打开一扇通往高效后端开发的大门。
|
3天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第30天】本文将通过一个Node.js的简单示例,引导你进入Node.js的世界。我们将从基础概念讲起,然后一步步深入到代码实现,最后总结Node.js在后端开发中的优势和应用场景。无论你是前端开发者还是后端新手,这篇文章都将为你打开一扇了解Node.js的大门。
11 2
|
12天前
|
开发框架 JavaScript 前端开发
HarmonyOS UI开发:掌握ArkUI(包括Java UI和JS UI)进行界面开发
【10月更文挑战第22天】随着科技发展,操作系统呈现多元化趋势。华为推出的HarmonyOS以其全场景、多设备特性备受关注。本文介绍HarmonyOS的UI开发框架ArkUI,探讨Java UI和JS UI两种开发方式。Java UI适合复杂界面开发,性能较高;JS UI适合快速开发简单界面,跨平台性好。掌握ArkUI可高效打造符合用户需求的界面。
54 8
|
10天前
|
JavaScript 前端开发
javascript开发的简单的弹幕插件
这是一个原生javascript开发的简单的弹幕插件,具有美观、易用,占用的资源较低等特点,可以给弹幕设置内容、颜色、头像、链接地址等属性,鼠标悬停等,简单实用,欢迎下载!
29 5
|
15天前
|
JavaScript 测试技术 API
跟随通义灵码一步步升级vue2(js)项目到vue3版本
Vue 3 相较于 Vue 2 在性能、特性和开发体验上都有显著提升。本文介绍了如何利用通义灵码逐步将 Vue 2 项目升级到 Vue 3,包括备份项目、了解新特性、选择升级方式、升级依赖、迁移组件和全局 API、调整测试代码等步骤,并提供了注意事项和常见问题的解决方案。
|
16天前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
21天前
|
JavaScript 前端开发 索引
JavaScript ES6及后续版本:新增的常用特性与亮点解析
JavaScript ES6及后续版本:新增的常用特性与亮点解析
20 4
|
7天前
|
JavaScript 前端开发 安全
深入浅出Node.js后端开发
【10月更文挑战第26天】在这篇文章中,我们将一起探索Node.js的奇妙世界。不同于传统的Java或Python,Node.js以其异步非阻塞I/O和事件驱动的特性,在后端开发领域独树一帜。无论你是初学者还是资深开发者,这篇文章都将为你提供新的视角和思考。从基础概念到实际应用,我们一步步深入Node.js的世界,让你了解其不仅仅是JavaScript运行环境那么简单。
|
21天前
|
存储 JSON JavaScript
Vue.js开发中基于localStorage与sessionStorage的本地存储利器:Vue-ls插件使用详解
Vue.js开发中基于localStorage与sessionStorage的本地存储利器:Vue-ls插件使用详解
38 0