此处是用process.stdout和process.stdin实现控制台登录
代码:
var user_info = {
'admin':'123456',
'user1':'456789'
};
//1.首先输出输入的提示信息
process.stdout.write('请输入用户名\n');
var user_name = '';
//2.接收用户的输入
process.stdin.on('data',(input) => {
input = input.toString().trim();
//由于每次输入都会执行到这里,所以在此处要知道input是啥?
if(!user_name){
//3.判断用户的输入存不存在
//获取一个键值对集合中的所有键
if(Object.keys(user_info).indexOf(input) === -1){
process.stdout.write('用户名不存在\n');
process.stdout.write('请输入用户名\n');
user_name = '';//不存在清空下
}else{
//4.用户存在,存储用户名,然后输入密码
user_name = input;
process.stdout.write('请输入密码\n');
}
}else{
//5.此时传入的是密码,做密码的判断处理
if(input === user_info[user_name]){
console.log('登陆成功');
}else{
process.stdout.write('请输入密码\n');
}
}
})
效果:
请输入用户名
admin
请输入密码
123456
登陆成功
注意坑:
1.输入的值不是字符串,其实是一个对象;
2.输入的值最后肯定有个换行符;
所以需要转换一下input = input.toString().trim();
3.每次输入值,都会走回调方法,注意判断每次输入的到底是啥。