You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用this.read()和maskchar实现jQuery Terminal登录命令?

jQuery Terminal 登录命令实现方案

直接给你整合好的完整实现代码,附带关键逻辑的说明:

实现代码(链式Promise写法)

$('body').terminal({
    login: function() {
        // 第一步:读取用户名
        this.read('Login: ')
            .then(username => {
                // 第二步:读取密码,配置掩码字符
                return this.read({
                    prompt: 'Password: ',
                    maskchar: '*'
                }).then(password => {
                    // 第三步:验证用户名和密码
                    if (username === 'admin' && password === '123456') {
                        this.echo('登录成功!');
                        // 这里可以添加登录后的逻辑,比如切换命令上下文、加载权限等
                    } else {
                        this.echo('用户名或密码错误,请重试!');
                    }
                });
            })
            .catch(error => {
                this.echo(`登录已取消: ${error}`);
            });
    }
}, {
    greetings: '欢迎使用终端系统,请输入「login」开始登录'
});

实现代码(async/await 简洁写法)

如果你的环境支持ES6+,推荐用这种更易读的写法:

$('body').terminal({
    async login() {
        try {
            // 读取用户名
            const username = await this.read('Login: ');
            // 读取密码,启用掩码
            const password = await this.read({
                prompt: 'Password: ',
                maskchar: '*'
            });
            // 验证逻辑
            if (username === 'admin' && password === '123456') {
                this.echo('登录成功!');
            } else {
                this.echo('用户名或密码错误,请重试!');
            }
        } catch (error) {
            this.echo(`登录已取消: ${error}`);
        }
    }
}, {
    greetings: '欢迎使用终端系统,请输入「login」开始登录'
});

关键逻辑说明

  1. 异步输入的链式处理
    jQuery Terminal的this.read()方法返回Promise对象,必须用.then()或者await处理后续流程,确保先获取用户名再进入密码输入环节,避免异步顺序混乱。

  2. 密码掩码的实现
    调用this.read()时传入配置对象,指定maskchar: '*',终端会自动将用户输入的密码字符替换为*,同时实际输入的密码值会正常传递到回调函数中。

  3. 输入内容的匹配验证
    获取到username和password变量后,直接用普通的if条件语句对比即可,变量里存储的就是用户实际输入的内容。

  4. 取消输入的异常处理
    用户按下Ctrl+C取消输入时,read()的Promise会触发reject,通过.catch()或者try/catch捕获该异常,给出友好提示。

内容的提问来源于stack exchange,提问作者NotHim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 04:55:15