站長資訊網
        最全最豐富的資訊網站

        node中怎么獲取命令行中的參數

        node中怎么獲取命令行中的參數

        node.js極速入門課程:進入學習

        在開發cli工具時,往往離不開獲取指令中各種參數信息,接下來本文將帶著你如何在Node.js中獲取執行時的參數。【相關教程推薦:nodejs視頻教程 、編程視頻】

        認識process

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

        node process文檔

        process.arg

        在該對象中,有一個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開始
        • 判斷數組中的每個值是否為--開頭,是則視為用戶傳入參數
        • 同樣進行切片操作,獲取下標2開始的字符,再通過=區分出對應的keyvalue,其返回的是[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' }
        登錄后復制

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚洲第一永久AV网站久久精品男人的天堂AV| 亚洲欧美国产精品第1页| 精品无码久久久久久久动漫| 国内少妇偷人精品视频免费| 欧美日韩综合精品| 国产av无码专区亚洲国产精品| 国产女人精品视频国产灰线| 亚洲人成电影网站国产精品| 国产女人18毛片水真多18精品| www.亚洲精品.com| 亚洲av日韩av天堂影片精品| 日韩AV毛片精品久久久| 国产精品一香蕉国产线看观看| 国产亚洲精品xxx| 国产精品网站在线观看免费传媒| 在线精品亚洲一区二区三区| 久久久精品国产Sm最大网站| 精品国产欧美一区二区三区成人| 亚洲精品免费视频| 久久99精品综合国产首页| 成人无码精品1区2区3区免费看| 亚洲AV无码成人精品区天堂 | 99国内精品久久久久久久| 国产成人精品无码播放| 亚洲色精品vr一区二区三区| 亚洲精品人成无码中文毛片| 欧美在线精品永久免费播放| 精品第一国产综合精品蜜芽| 国产三级精品三级在线观看| 国产三级精品三级| 久久无码人妻精品一区二区三区| 久久精品成人免费观看97| 久久激情亚洲精品无码?V| 无码国模国产在线无码精品国产自在久国产| 国自产精品手机在线观看视频| 精品久久久久久无码中文野结衣| 精品无码国产自产拍在线观看蜜| 麻豆精品视频在线观看| 四虎影视永久在线精品免费| 亚洲日韩欧美制服精品二区| 午夜精品一区二区三区免费视频|