如何用jQuery Terminal搭建无预设命令的问答系统?兼释解释器类型差异
使用jQuery Terminal搭建无预设命令的问答系统及解释器类型解析
问题描述
我已阅读jQuery Terminal的文档及相关文章,目前将其用于GUI而非命令行终端功能,希望实现问答交互:输出问题并读取答案,类似选择类游戏的交互逻辑。
文章中的示例代码(基于对象解释器):
<script> $('body').terminal({ hello: function(what) { this.echo('Hello, ' + what + '. Welcome to this terminal.'); } }, { greetings: 'My First Web Terminal' }); </script>会生成问候语,但需知晓预设命令'hello'才能使用,输入错误命令会提示“Command x not found”。
文档中读取输入的示例代码:
$('#term').terminal({ name: function(name) { this.read('last name: ', last_name => { this.echo('Your name is ' + name + ' ' + last_name); }); } });同样需要知晓预设命令'name'才能使用。
请问是否有简便方法搭建无需预先设定命令的问答系统?同时我未理解将解释器创建为函数、对象或字符串的不同适用场景,望解答。
一、搭建无预设命令的问答系统
使用函数式解释器即可实现无需预设命令的问答逻辑,它会接收用户的所有输入并交由自定义逻辑处理,完全摆脱预设命令的限制。以下是一个类似选择类游戏的示例:
$('body').terminal(function(input) { // 清除当前输入行 this.clear(); // 用自定义变量跟踪当前问答阶段 if (!this.currentStage) { // 初始问题 this.echo('欢迎来到选择游戏!请输入你的名字:'); this.currentStage = 'name'; } else if (this.currentStage === 'name') { this.echo(`你好,${input}!接下来请选择你的冒险方向:1. 森林 2. 城堡`); this.currentStage = 'choice'; } else if (this.currentStage === 'choice') { switch(input.trim()) { case '1': this.echo('你进入了森林,发现了一只可爱的小鹿!'); break; case '2': this.echo('你来到了城堡门前,守卫向你敬礼!'); break; default: this.echo('请输入有效的选项(1或2)!'); this.echo('请选择你的冒险方向:1. 森林 2. 城堡'); return; } this.echo('接下来你想做什么?输入"继续"开启下一段旅程:'); this.currentStage = 'next'; } else if (this.currentStage === 'next' && input.trim() === '继续') { this.echo('新的冒险即将开始...'); // 重置流程,可循环交互 this.currentStage = null; } else { this.echo('请按照提示输入正确内容!'); if (this.currentStage === 'next') { this.echo('输入"继续"开启下一段旅程:'); } } }, { greetings: '选择类游戏问答系统', prompt: '请输入你的答案:' });
核心逻辑:
- 以函数作为解释器,所有用户输入都会传入该函数
- 通过自定义变量(如
currentStage)跟踪当前问答节点 - 根据输入内容和当前节点,动态输出下一个问题或反馈
二、三种解释器的适用场景
1. 对象解释器
- 适用场景:需要预设明确命令的传统终端式交互,比如模拟命令行工具、后台管理终端等。
- 特点:对象的每个键对应一个命令名,值为处理该命令的函数。用户必须输入预设命令名才能触发逻辑,输入未定义命令会提示“Command not found”。
- 典型场景:你提供的
hello、name命令示例,适合有固定操作指令的场景。
2. 函数解释器
- 适用场景:需要完全自定义输入处理逻辑的场景,比如问答系统、聊天机器人、选择类游戏等。
- 特点:所有用户输入都会传入该函数,可自由处理输入内容,无需预设命令,完全控制交互流程。
- 典型场景:上面的问答系统代码,适合无固定命令、需要动态引导用户的交互。
3. 字符串解释器
- 适用场景:需要自定义小型脚本语言或解析表达式的场景,比如让用户输入数学表达式、简单脚本指令等。
- 特点:将用户输入的字符串当作代码执行(需配合自定义解析逻辑),可实现复杂的自定义语法。
- 典型场景:支持用户输入
2+3*4这类数学表达式并返回结果,或自定义一套简单的指令语法。
内容的提问来源于stack exchange,提问作者jm007
相关产品推荐
相关产品推荐

