溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

node如何獲取命令行中的參數(shù)

發(fā)布時間:2022-11-10 09:33:27 來源:億速云 閱讀:143 作者:iii 欄目:web開發(fā)

這篇文章主要講解了“node如何獲取命令行中的參數(shù)”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“node如何獲取命令行中的參數(shù)”吧!

認識process

processnodejs內置的一個對象,該對象提供了當前有關nodejs進程的信息。(例如獲取當前進程id,執(zhí)行平臺等與當前執(zhí)行進程相關的對象和方法)

process.arg

在該對象中,有一個arg屬性,它可以獲取當前node執(zhí)行時傳入各個參數(shù)數(shù)據(jù)。

我們創(chuàng)建一個index.js文件,先打印下process.args里面是什么東西

console.log(process.arg)
// node index.js
[
  'D:\\software\\nodejs\\node.exe',
  'D:\\project\\script\\src\\index.js'
]

從上面的輸出結果,可以得到當前執(zhí)行的node程序路徑(也就是process.execPath返回值)和執(zhí)行的文件(index.js)路徑,我們像使用其他cli工具一樣添加一些參數(shù)試試

node index.js name=zhangsan age=18
[
  'D:\\software\\nodejs\\node.exe',
  'D:\\project\\script\\src\\index.js',
  'name=zhangsan',
  'age=18'
]

可以看到我們傳入的name參數(shù)與age參數(shù)也被獲取到了

需要注意的是argv中的參數(shù)是通過空格來分割的

通常,我們會在命令行每個參數(shù)前面添加--字符,用來識別傳入的各個參數(shù)。

例如在esbuild構建工具中

esbuild app.jsx --bundle --outfile=out.js

例如在vite構建工具中

vite --config my-config.js

修改一下上面的命令為

node index.js --name=zhangsan --age=18

將會得到如下輸出結果

[
  'D:\\software\\nodejs\\node.exe',
  'D:\\project\\script\\src\\index.js',
  '--name=zhangsan',
  '--age=18'
]

封裝獲取參數(shù)函數(shù)

從上面兩個例子和官方文檔中,我們可以得知argv的前兩個參數(shù)都是固定的,在獲取用戶傳入的參數(shù)我們需要process.argv.slice(2)一下,只獲取從下標2開始的元素。 也即是

[
  '--name=zhangsan',
  '--age=18'
]

有了這些數(shù)據(jù)之后,我們需要再進一步解構里面的參數(shù),將前面的--去除掉,把key=value改變成{key:value}方便我們在開發(fā)中進行參數(shù)獲取。 最終我們得到了這樣子的函數(shù):

  • process.argv數(shù)組,并切片從下標2開始

  • 判斷數(shù)組中的每個值是否為--開頭,是則視為用戶傳入?yún)?shù)

  • 同樣進行切片操作,獲取下標2開始的字符,再通過=區(qū)分出對應的keyvalue,其返回的是[key,value]

  • 最后,將這個二維數(shù)組傳入到Object.fromEntries轉換為一個對象

const arguments = process.argv.slice(2);
const params = Object.fromEntries(
  arguments.reduce((pre, item) => {
    if (item.startsWith("--")) {
      return [...pre, item.slice(2).split("=")];
    }
    return pre;
  }, []),
);
console.log(params)
// { name: 'zhangsan', age: '18' }

感謝各位的閱讀,以上就是“node如何獲取命令行中的參數(shù)”的內容了,經過本文的學習后,相信大家對node如何獲取命令行中的參數(shù)這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI