node.js極速入門課程:進入學習
在開發cli
工具時,往往離不開獲取指令中各種引數資訊,接下來本文將帶著你如何在Node.js
中獲取執行時的引數。【相關教學推薦: 、】
process
是nodejs
內建的一個物件,該物件提供了當前有關nodejs
程序的資訊。(例如獲取當前程序id,執行平臺等與當前執行程序相關的物件和方法)
在該物件中,有一個arg屬性,它可以獲取當前node執行時傳入各個引數資料。
我們建立一個index.js檔案,先列印下process.args裡面是什麼東西
console.log(process.arg)
// node index.js
[
'D:\\software\\nodejs\\node.exe',
'D:\\project\\script\\src\\index.js'
]
登入後複製
從上面的輸出結果,可以得到當前執行的node程式路徑(也就是process.execPath
返回值)和執行的檔案(index.js
)路徑,我們像使用其他cli
工具一樣新增一些引數試試
node index.js name=zhangsan age=18
登入後複製
[
'D:\\software\\nodejs\\node.exe',
'D:\\project\\script\\src\\index.js',
'name=zhangsan',
'age=18'
]
登入後複製
可以看到我們傳入的name
引數與age
引數也被獲取到了
需要注意的是argv中的引數是通過空格來分割的
通常,我們會在命令列每個引數前面新增--
字元,用來識別傳入的各個引數。
例如在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'
]
登入後複製
從上面兩個例子和官方檔案中,我們可以得知argv的前兩個引數都是固定的,在獲取使用者傳入的引數我們需要process.argv.slice(2)
一下,只獲取從下標2開始的元素。
也即是
[
'--name=zhangsan',
'--age=18'
]
登入後複製
有了這些資料之後,我們需要再進一步解構裡面的引數,將前面的--
去除掉,把key=value
改變成{key:value}
方便我們在開發中進行引數獲取。
最終我們得到了這樣子的函數:
process.argv
陣列,並切片從下標2開始--
開頭,是則視為使用者傳入引數=
區分出對應的key
和value
,其返回的是[key,value]
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中怎麼獲取命令列中的引數的詳細內容,更多請關注TW511.COM其它相關文章!