天天看點

Nodejs進階:readline實作日志分析+簡易指令行工具

檔案逐行讀取:比如說進行日志分析。

自動完成:比如輸入npm,自動提示"help init install"。

指令行工具:比如npm init這種問答式的腳手架工具。

先看個簡單的例子,要求使用者輸入一個單詞,然後自動轉成大寫

運作如下:

比如我們有如下日志檔案access.log,我們想要提取“通路時間+通路位址”,借助<code>readline</code>可以很友善的完成日志分析的工作。

代碼如下:

運作結果如下:

這裡我們實作一個簡單的自動完成功能,當使用者輸入npm時,按tab鍵,自動提示使用者可選的子指令,如help、init、install。

輸入<code>np</code>,按下tab:自動補全為npm

輸入<code>npm in</code>,按下tab:自動提示可選子指令 init、install

輸入<code>npm inst</code>,按下tab:自動補全為 <code>npm install</code>

代碼運作效果如下,當輸入<code>npm in</code>,按下tab鍵,則會自動提示可選子指令init、install。

下面借助readline實作一個迷你版的<code>npm init</code>功能,運作腳本時,會依次要求使用者輸入name、version、author屬性(其他略過)。

這裡用到的是<code>rl.question(msg, cbk)</code>這個方法,它會在控制台輸入一行提示,當使用者完成輸入,敲擊回車,<code>cbk</code>就會被調用,并把使用者輸入作為參數傳入。

運作效果如下,最後還像模像樣的生成了package.json(害羞臉)。

有不少基于readline的有趣的工具,比如各種腳手架工具。限于篇幅不展開,感興趣的同學可以研究下。

<a href="https://nodejs.org/api/readline.html">https://nodejs.org/api/readline.html</a>

繼續閱讀