国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

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

2024-05-06 16:51:03
字體:
來源:轉載
供稿:網友

寫在前面:

開始通過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,用戶,命令行交互

寫在后面:

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


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 北票市| 郁南县| 桐乡市| 商水县| 巫山县| 长宁县| 隆安县| 班戈县| 朝阳县| 凤台县| 胶南市| 兴文县| 蓝山县| 东乡族自治县| 天水市| 宣城市| 永定县| 无为县| 高陵县| 宁津县| 白山市| 旬邑县| 临西县| 眉山市| 象州县| 桐柏县| 吕梁市| 满洲里市| 邵阳市| 叙永县| 留坝县| 大埔县| 琼海市| 沾化县| 安国市| 凤城市| 湘潭市| 虞城县| 蚌埠市| 新昌县| 峡江县|