什麼是Readline
Readline是Node.js裡實現標準輸入輸出的封裝好的模組,透過這個模組我們可以以逐行的方式讀取資料流。使用require("readline")可以引用模組。
如何使用Readline
以使用為角度的話,學習Readline,我們需要學習它的三個部分:
創建Readline實例
學習裡面的介面方法
學習Readline實例
實例1:我叫小明
/** * Created by Administrator on 2015/9/10. */ // 引入readline模块 var readline = require('readline'); //创建readline接口实例 var rl = readline.createInterface({ input:process.stdin, output:process.stdout }); // question方法 rl.question("你叫什么?",function(answer){ console.log("名字是:"+answer); // 不加close,则不会结束 rl.close(); }); // close事件监听 rl.on("close", function(){ // 结束程序 process.exit(0); });
在createInterface裡,我們需要傳入標準輸入輸出作為資料的輸入輸出流
在question方法的回調函數裡,我們可以取得到使用者的輸入並進行處理,同時我們進行了close運算來結束程序,否則程式不會結束
在close事件的監聽裡,我們執行了process.exit(0)來使程式退出的操作,因為readline模組只要一開始取得使用者輸入就不會結束,必須使用這種直接的方式來結束程式
實例2:輸入與輸出
/** * Created by Administrator on 2015/9/10. */ // 引入readline模块 var readline = require('readline'); var rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.on('line', function(line){ switch(line.trim()) { case 'copy': console.log("复制"); break; case 'hello': rl.write("Write"); console.log('world!'); break; case 'close': rl.close(); break; default: console.log('没有找到命令!'); break; } }); rl.on('close', function() { console.log('bye bye'); process.exit(0); });
var readline = require('readline'); var rl = readline.createInterface(process.stdin, process.stdout); rl.setPrompt('Test> '); rl.prompt(); rl.on('line', function(line) { switch(line.trim()) { case 'copy': console.log("复制"); break; case 'hello': console.log('world!'); break; case 'close': rl.close(); break; default: console.log('没有找到命令!'); break; } rl.prompt(); }); rl.on('close', function() { console.log('bye bye!'); process.exit(0); });
方法setPromat(promat(promat) 每一行設定一個提示符,就好比window命令行的> ,我們這裡設定的是Test>
promat()可以算是最重要的方法了,因為它才體現了Readline的核心作用,以行為單位讀取數據,premat方法就是在等待用戶輸入數據
這裡又監聽了'line' 事件,因為promat方法調用一次就只會讀取一次數據,所以,在這個方法又調用了一次promat方法,這樣就可以繼續讀取使用者輸入,從而達到一種命令列的效果
附錄