持续创作,加速成长!这是我参与「掘金日新计划 · 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
今天吃什么的发生,到底需要如何做到,不今天吃什么的发生,又会如何产生。 我认为,
今天吃什么,到底应该如何实现。 既然如此,今天吃什么,到底应该如何实现。 今天吃
什么,到底应该如何实现。 我认为,今天吃什么,到底应该如何实现。 今天吃什么,到
底应该如何实现。 培根说过,深窥自己的心,而后发觉一切的奇迹在你自己。这不禁令我
深思。 今天吃什么,到底应该如何实现。 今天吃什么,到底应该如何实现。 培根说过,
深窥自己的心,而后发觉一切的奇迹在你自己。这启发了我。我认为,今天吃什么,到底
应该如何实现。 今天吃什么,到底应该如何实现。 今天吃什么,到底应该如何实现。 今
天吃什么,到底应该如何实现。 今天吃什么,到底应该如何实现。 培根说过,深窥自己
的心,而后发觉一切的奇迹在你自己。这启发了我。
生成完毕
控制台版本的狗屁不通文章生成器就告一段落了,下一部分开始更新网页版的文章生成器。