中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

inquirer.js一個用戶與命令行交互的工具詳解

發布時間:2020-09-29 22:33:31 來源:腳本之家 閱讀:199 作者:xhsdnn 欄目:web開發

寫在前面:

開始通過npm init 創建package.json的時候就有大量與用戶的交互(當然也可以通過參數來忽略輸入);而現在大多數工程都是通過腳手架來創建的,使用腳手架的時候最明顯的就是與命令行的交互,如果想自己做一個腳手架或者在某些時候要與用戶進行交互,這個時候就不得不提到inquirer.js了。

零. 介紹

由于交互的問題種類不同,inquirer為每個問題提供很多參數:

  • type:表示提問的類型,包括:input, confirm, list, rawlist, expand, checkbox, password, editor;
  • name: 存儲當前問題回答的變量;
  • message:問題的描述;
  • default:默認值;
  • choices:列表選項,在某些type下可用,并且包含一個分隔符(separator);
  • validate:對用戶的回答進行校驗;
  • filter:對用戶的回答進行過濾處理,返回處理后的值;
  • transformer:對用戶回答的顯示效果進行處理(如:修改回答的字體或背景顏色),但不會影響最終的答案的內容;
  • when:根據前面問題的回答,判斷當前問題是否需要被回答;
  • pageSize:修改某些type類型下的渲染行數;
  • prefix:修改message默認前綴;
  • suffix:修改message默認后綴。

上面的屬性(除transformer外)在下面都有對應使用。

一. 使用

0. 語法結構

const inquirer = require('inquirer');

const promptList = [
  // 具體交互內容
];

inquirer.prompt(promptList).then(answers => {
  console.log(answers); // 返回的結果
})

1. input

const promptList = [{
  type: 'input',
  message: '設置一個用戶名:',
  name: 'name',
  default: "test_user" // 默認值
},{
  type: 'input',
  message: '請輸入手機號:',
  name: 'phone',
  validate: function(val) {
    if(val.match(/\d{11}/g)) { // 校驗位數
      return val;
    }
    return "請輸入11位數字";
  }
}];

效果:

inquirer.js一個用戶與命令行交互的工具詳解

2. confirm

const promptList = [{
  type: "confirm",
  message: "是否使用監聽?",
  name: "watch",
  prefix: "前綴"
},{
  type: "confirm",
  message: "是否進行文件過濾?",
  name: "filter",
  suffix: "后綴",
  when: function(answers) { // 當watch為true的時候才會提問當前問題
    return answers.watch
  }
}];

效果:

inquirer.js一個用戶與命令行交互的工具詳解 

inquirer.js一個用戶與命令行交互的工具詳解

3. list

const promptList = [{
  type: 'list',
  message: '請選擇一種水果:',
  name: 'fruit',
  choices: [
    "Apple",
    "Pear",
    "Banana"
  ],
  filter: function (val) { // 使用filter將回答變為小寫
    return val.toLowerCase();
  }
}];

效果:

inquirer.js一個用戶與命令行交互的工具詳解 

inquirer.js一個用戶與命令行交互的工具詳解

4. rawlist

const promptList = [{
  type: 'rawlist',
  message: '請選擇一種水果:',
  name: 'fruit',
  choices: [
    "Apple",
    "Pear",
    "Banana"
  ]
}];

效果:

inquirer.js一個用戶與命令行交互的工具詳解

5. expand

const promptList = [{
  type: "expand",
  message: "請選擇一種水果:",
  name: "fruit",
  choices: [
    {
      key: "a",
      name: "Apple",
      value: "apple"
    },
    {
      key: "O",
      name: "Orange",
      value: "orange"
    },
    {
      key: "p",
      name: "Pear",
      value: "pear"
    }
  ]
}];

效果:

inquirer.js一個用戶與命令行交互的工具詳解 

inquirer.js一個用戶與命令行交互的工具詳解

6. checkbox

const promptList = [{
  type: "checkbox",
  message: "選擇顏色:",
  name: "color",
  choices: [
    {
      name: "red"
    },
    new inquirer.Separator(), // 添加分隔符
    {
      name: "blur",
      checked: true // 默認選中
    },
    {
      name: "green"
    },
    new inquirer.Separator("--- 分隔符 ---"), // 自定義分隔符
    {
      name: "yellow"
    }
  ]
}];
// 或者下面這樣
const promptList = [{
  type: "checkbox",
  message: "選擇顏色:",
  name: "color",
  choices: [
    "red",
    "blur",
    "green",
    "yellow"
  ],
  pageSize: 2 // 設置行數
}];

效果:

inquirer.js一個用戶與命令行交互的工具詳解 

inquirer.js一個用戶與命令行交互的工具詳解

7. password

const promptList = [{
  type: "password", // 密碼為密文輸入
  message: "請輸入密碼:",
  name: "pwd"
}];

效果:

inquirer.js一個用戶與命令行交互的工具詳解

8. editor

const promptList = [{
  type: "editor",
  message: "請輸入備注:",
  name: "editor"
}];

效果:

inquirer.js一個用戶與命令行交互的工具詳解 

inquirer.js一個用戶與命令行交互的工具詳解

寫在后面:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

边坝县| 比如县| 岳西县| 墨江| 正镶白旗| 肃宁县| 石泉县| 罗田县| 寿宁县| 贡嘎县| 伽师县| 鞍山市| 禄丰县| 建阳市| 青海省| 肥东县| 新兴县| 贵州省| 涪陵区| 临夏县| 台北县| 平山县| 麻阳| 三原县| 吉安县| 阜宁县| 宣化县| 高雄县| 莒南县| 中阳县| 丹巴县| 嘉荫县| 前郭尔| 鄱阳县| 周至县| 呼玛县| 梧州市| 家居| 介休市| 延津县| 宣威市|