前言
每次看到一些庫npm -g install xx
然後,執行xx
就可以跑起來,這不就是乙個shell工具了嗎,那麼我不就可以不用學習shell語法,直接用js寫命令列指令碼了嗎!
什麼是repl應用
所謂的repl(read-eval-print-loop)應用就是乙個終端命令列工具,如果使用linux對於命令列工具例如curl,awk,grep,find,這些肯定不陌生,而現在,我們就是用node去寫類似這樣的程式
讀取-求值-輸出
對於第一次動手寫repl應用,我們首先,了解一些知識點.
文件process 物件在node裡面是全域性物件,不需要用require引入,直接使用
console.log(process)我們就可以在終端裡面看到process都有些什麼內容了.對於,開發乙個repl應用,我們對於process物件只需要了解以下下幾點就行
對於process的了解這幾點大部分repl應用都可以開發了,接下來,我們說說,如何讓命令列工具讀取引數.
對於repl而言,值讀取的常見的一般有兩種:
配置值
1234567
8910
#!/usr/bin/env nodeif(process.argv[2] === '-w')) console.log(output); process.exit(); }
node repl.js -w hello world!互動式hello world!
1234567
891011
12
#!/usr/bin/env nodefunction read(prompt) ); } read('input')
node repl.jsrepl 應用本質其實就是乙個shell指令碼,現在我們要用node來寫,所以,對於*nix環境我們必須在第一行說明我們的檔案需要在什麼環境下執行.input: hello world!
output: hello world!
#!/usr/bin/env node
process.argv
我們主要從命令列輸入值都是從process.argv
裡面讀取,這個物件,儲存了我們所有命令列的輸入,我們可以列印出來看看
console.log(`process.argv)從這個輸出我們就可以很明了的知道我們為什麼要用1234
[ 'node','e:\\projectgithub\\node.js\\repl.js',
'-w',
'helloworld!' ]
process.argv.slice(3);
來獲取值了.
process.stdout && process.stdin
這兩個方法用於對終端輸出和輸入的操作,上面的例子應該很好演示這個使用了,這裡就不再贅述了.
實戰演練
現在要講的這個repl應用就是簡單的在終端中顯示前端亂燉的專欄列表.效果如下(ps:綠色那些是debug輸出,你自動忽略吧...):
輸入內容準備htmljs article
輸入htmljs article -p 1
這裡用到了request
,cheerio
對前端亂燉頁面進行解析,這塊的討論已經超出了本文的討論範圍,以後放在介紹cheerio
的時候再說這塊的實現.
用命令列看前端亂燉專欄列表:
利用commander處理輸入
對於如何在終端輸入引數,在上面的讀取篇已經全部介紹完畢,用原生process
處理輸入異常的繁瑣,對於這點,tj大神寫了乙個模組commander
用來處理.
1234567
891011
1213
1415
1617
1819
#!/usr/bin/env nodevar program = require('commander'),
htmljscli = require('../index'), libinfo = require('../package'); program .version(libinfo.version) program .command('article') .description('show article list') .option('-p, --page [page]', 'article list') .action(function(options)); program.parse(process.argv); // 這行必須是結尾
不到20行**就可以解決了原本需要各種處理process.argv
情況,而且還很貼心了幫我們自動生成help介紹
htmljs article -h使用
commander
我們只需要了解一下幾點就可以了
用於將物件值物件化, 例如上文定義的commander .option('-p, --page [page]', 'article list')
我們輸入的時候-p
的時候,就可以用options.page
獲取我們的引數
用於配置子命令有時候,一些庫會要求我們
npm -g install cnpm然後很神奇的發現可以
cnpm install xx這類的操作,那我們發布的包怎麼實現這個神奇的魔法呢.原理非常簡單,我們只需要在我們的
package.json
加入以下幾句就行
12345
}
用npm
安裝的時候就會自動與當前系統環境進行繫結.
接下來我們只需要
npm -g install html-js-cli執行
htmljs article就可以在終端看到專欄列表了
值得注意的時候,在windows
發布你寫node repl應用,*nix
使用者安裝的時候,命令並不會起作用,所以,要用npm
發布repl應用的時候請使用*nix
系統
node 建立應用
簡單的說就是乙個 服務端渲染 的 mvc 框架。優點 adonisjs 作為乙個服務端渲染的框架,能夠解決很多現在流行的前端框架無法實行的問題 比如相容 ie8 等 npm install adonisjs cli global 全域性安裝 adonisjs adonis new project a...
Node建立應用
使用 node.js 時,我們不僅僅 在實現乙個js應用,同時還實現了整個 http 伺服器.1 引入 required 模組 我們可以使用require指令來載入 node.js 模組.2 建立伺服器 伺服器可以監聽客戶端的請求,類似於 apache nginx 等 http 伺服器.3 接收請求...
用Node Inspector除錯NodeJs程式
一 安裝 npm install node inspector g 二 使用 2.啟動node inspector node inspector web port 8080 debug port 5858 在5858埠掛上偵錯程式,然後允許程式設計師通過8080埠進行除錯 三 除錯 1.使用chro...