[12] 增加 input 输入功能

接着 input 输入的各种功能才可以制作介面互动

所以这边我们使用套件input

npm i input --save

接着再加上将 class FlowController 流程控制加上一个 mainMenu

flowController.js

const viewPrinter = require("../view/viewPrinter");

class FlowController {
  constructor() {}

  /**
   * @description 确保都拿到同一个实例
   *
   * @static
   * @return {*}
   * @memberof ConsoleItem
   */
  static getInstance() {
    if (!this.instance) {
      this.instance = new this();
    }
    return this.instance;
  }

  /**
   * @description 起始画面
   *
   * @memberof FlowController
   */
  async start() {
    await viewPrinter.welcome();
    this.mainMenu();
  }

  /**
   * @description 主要选单
   *
   * @memberof FlowController
   */
  async mainMenu() {
    let selectOption = await viewPrinter.mainMenu();
    switch (selectOption) {
      case "登入":
        break;
      case "离开":
        console.log(selectOption);
        break;
      default:
        break;
    }
    this.start();
  }
}

let flowController = FlowController.getInstance();

module.exports = flowController;

一样 ViewPrinter 加上 mainMenu

viewPrinter.js

const consoleItem = require("../interface/consoleItem");
const input = require("input");

class ViewPrinter {
  
  constructor() {}
  
  /**
   * @description 确保都拿到同一个实例
   *
   * @static
   * @return {*} 
   * @memberof ConsoleItem
   */
  static getInstance() {
    if (!this.instance) {
      this.instance = new this();
    }
    return this.instance;
  }


  /**
   * @description 欢迎你
   *
   * @memberof ViewPrinter
   */
  async welcome() {
    return new Promise((resolve) => {
      let str = [
        "=======================================================",
        "=======================================================",
        "============                               ============",
        "============     Welcome Node Telegram     ============",
        "============                               ============",
        "=======================================================",
        "=======================================================",
      ]
      console.log("\x1b[36m");
      for( let i = 0 ; i < str.length ; i++ ) {
        setTimeout(() => {
          console.log(str[i]);
          if(i === str.length -1) {
            console.log("\x1b[0m");
            resolve();
          };
        }, i * 100);
      } 
    })  
  }


  /**
   * @description 主要画面选单
   *
   * @memberof ViewPrinter
   */
  async mainMenu() {
    let option = ["登入", "离开"];

    let selectOption = await input.select("你好:", option);

    return selectOption;
  }

}

let viewPrinter = ViewPrinter.getInstance();

module.exports = viewPrinter;

day12


<<:  Day_16 UCI System

>>:  Day.20 Course Schedule

[Day29]领费币+布署链上

hi!今天要教好几个领免费币的方法!相信大家有看前面几天的内容一定会知道在每次进行交易时,都会需要...

[DAY8] 与 ActiveRecord 分手

先来看看目前我们专案的资料夹结构: 前面有提到,ActiveRecord 所建立的 model 与 ...

[Day 20]从零开始学习 JS 的连续-30 Days---todolist 待办事项

待办事项结构 to do list 需要输入框与输入按钮。 送出输入按钮後产生待办事项与完成按钮。 ...

[Day13] 补充说明 – csrf

今天要来补充一下Day9 – views有说明到的csrf,虽然这些东西某某百科都有,那我会特别补充...

Day 9 - Laravel 8.0的Error Handling

不管是预期或非预期,程序往往会发生一些错误,我们不希望使用者Call API或浏览网页的时候发生错误...