# 处理命令行中的输入,模拟登陆

// 获取命令行输入,并且输出,官网示例代码
// process.stdin.setEncoding('utf8')

// process.stdin.on('readable', () => {
//   const chunk = process.stdin.read()
//   if (chunk !== null) {
//     process.stdout.write(`data: ${chunk}`)
//   }
// })

// process.stdin.on('end', () => {
//   process.stdout.write('end')
// })
1
2
3
4
5
6
7
8
9
10
11
12
13
// 命令行登陆
let q = '请输入用户名:'

let users = {
  admin: '123456',
  user1: '654321'
}

// 输出第一个问题
process.stdout.write(q + '\n')

let username = ''
// 接收用户输入
process.stdin.on('data', (input) => {
  // input 是一个流对象,需要先转换为字符串
  input = input.toString() .trim() // 结尾包含一个回车,需要去掉
  if (!username) {
    if (Object.keys(users).indexOf(input) === -1) {
      // 用户名不存在
      process.stdout.write('用户名不存在' + '\n')
      process.stdout.write(q + '\n')
    } else {
      process.stdout.write('请输入密码: ' + '\n')
      username = input
    }
  } else {
    if (input === users[username]) {
      process.stdout.write('登陆成功 ' + '\n')
    } else {
      process.stdout.write('密码错误,请重新输入:' + '\n')
    }
  }
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33