## 命令行交互
在使用`npm init`的時候,你可以根據提示輸入信息,命令行會根據你輸入的信息做進一步的信息反饋,這就是一個命令行交互的過程。這一小節,我們將介紹第三方模塊`co-prompt`,它能輕松實現命令行交互程序的開發。
[TOC]
### 安裝
`co-prompt`模塊依賴于`co`模塊,所以,兩個模塊我們都需要安裝。這里只介紹本地安裝
>Tips :
`co`模塊是非常有名的異步程序處理模塊,這里不展開,建議自行學習。
學習`co`模塊之前,需要先了解一下`ES6`的新特性[Generator 函數](http://es6.ruanyifeng.com/#docs/generator)
~~~
$ npm install co co-prompt --save
~~~
### co-prompt的使用
#### 引用
~~~
var co = require('co');
var prompt = require('co-prompt');
~~~
#### API
**普通文本提示**
* prompt(msg)
* `msg <String>`:提示用戶信息的具體內容
例子:
**密碼文本提示,密碼非明文顯示**
* prompt.password(msg, [mask])
* `msg <String>`:提示用戶信息的具體內容
* `mask <String>`:輸入密碼時的顯示替換字符,默認是"*"
**多行文本提示**
* prompt.multiline(msg)
* `msg <String>`:提示用戶信息的具體內容
**確認提示信息**
* prompt.confirm(msg)
* `msg <String>`:提示用戶信息的具體內容
* `返回值 <Bool>`:true|false
>Tips:
`confirm()`方法只有在用戶輸入`[y|yes|ok|true]`這4個值(不區分大小寫)時,才返回`true`,其他情況都是`false`,所以,你的確認提示信息必須引導用戶輸入合適的值或者你程序的業務邏輯需要做必要調整
#### 綜合例子
~~~
var co = require('co');
var prompt = require('co-prompt');
co(function*() {
var username = yield prompt('username: ');
var pwd = yield prompt.password('password: ');
var desc = yield prompt.multiline('description:');
var ok = yield prompt.confirm('are you sure?(yes|no)');
console.log('hello %s %s\n', username, pwd);
console.log('you describe yourself as:\n' + desc);
console.log('answer: %s', ok);
process.exit();
});
~~~
### co和co-prompt API地址:
**co 官網地址:https://www.npmjs.com/package/co <br/>**
**co-prompt 官網地址:https://www.npmjs.com/package/co-prompt <br/>**