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

首頁 > 語言 > JavaScript > 正文

node.js命令行教程圖文詳解

2024-05-06 15:38:59
字體:
來源:轉載
供稿:網友

本文先介紹原生的node.js實現命令行交互,了解原生的api,然后通過commander.js和inquirer.js實現一個完整的交互命令行工具。

項目地址

process (進程)

process對象是一個全局變量,它提供了當前node.js進程的信息并對其控制。因為其是一個全局變量所以無需在文件中引入。

需要用到的幾個api

process.argv process.cwd() process.stdin process.stdout process.stdin.resume() process.argv

process.argv

屬性返回一個數組。數組的第一個值是process.execPath,第二個是正在執行的JavaScript的文件路徑,其余參數為其它命令參數,這是我們來自定義命令的關鍵。

示例

新建argv.js

// argv.jsconsole.log(process.argv)

執行node命令node argv.js

node argv.js --name zhu## 輸出[ '/usr/local/bin/node', ## 執行當前腳本的Node二進制文件的絕對路徑 '/Users/zhuhuilong/Node/Book/argv.js', ## 文件的絕對路徑 '--name', ## 其余參數 'zhu' ]

接收自定義的命令參數進行處理輸出

// argv.jsconsole.log(process.argv)let argvs = process.argvlet param = argvs.splice(2)if(param[0] && param[0] == '--name'){ if(param[1]){ console.log(`hello ${param[1]}`) }else{ console.log('請輸入name') }}

運行argv.js

node argv.js --name zhu## 輸出[ '/usr/local/bin/node', '/Users/zhuhuilong/Node/Book/argv.js', '--name', 'zhu' ]hello zhuparam [ '--name', 'zhu' ]

process.stdin與process.stdout

process.stdin(標準輸入)

process.stdin 屬性返回連接到 stdin (fd 0) 的流。 它是一個 net.Socket 流(也就是雙工流),除非 fd 0 指向一個文件,在這種情況下它是一個可讀流。

process.stdout(標準輸出)

process.stdout 屬性返回連接到 stdout (fd 1) 的流。 它是一個 net.Socket 流(也就是雙工流),除非 fd 1 指向一個文件,在這種情況下它是一個可寫流。

process.stdin.resume()

一個指向 標準輸入流(stdin) 的可讀流(Readable Stream)。標準輸入流默認是暫停 (pause) 的,所以必須要調用 process.stdin.resume() 來恢復 (resume) 接收。 作為流,process.stdin可以在舊模式下使用。為了兼容node v0.10以前的版本。在舊模式喜愛使用stdin必須調用process.stdin.resume()。注意如果調用了process.stdin.resume() stdin將轉為舊模式。

通俗來講就是控制臺等待我們輸入內容不退出進程,對輸入輸出進行交互。

新建inputout.js

// inputout.jsprocess.stdin.setEncoding('utf8')let argvs = process.argvlet param = argvs.splice(2)if (param[0] && param[0] == '--name') { if (param[1]) { console.log(`hello ${param[1]}`) } else { process.stdout.write(`請輸入name:`) process.stdin.resume() process.stdin.on('data', chunk => {  if (!!chunk.replace(/[/r/n]/g, '')) {  process.stdout.write(`你輸入的name是: ${chunk}`)  process.stdin.emit('end')  } else {  process.stdout.write(`請輸入name:`)  } }) }}process.stdin.on('end', () => { process.stdout.write('結束/n')})            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 昌平区| 江山市| 姚安县| 宜阳县| 钟祥市| 仪陇县| 淄博市| 乡宁县| 互助| 廊坊市| 大渡口区| 华安县| 辽宁省| 新竹市| 靖宇县| 平阳县| 郯城县| 中宁县| 肃宁县| 诸城市| 齐河县| 富蕴县| 陕西省| 中山市| 东平县| 育儿| 杨浦区| 景泰县| 安远县| 托克逊县| 象山县| 辽中县| 乌拉特后旗| 昭觉县| 大荔县| 突泉县| 轮台县| 油尖旺区| 娄底市| 原阳县| 台中县|