久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      node中怎么獲取命令行中的參數(shù)

      node中怎么獲取命令行中的參數(shù)

      node.js極速入門課程:進(jìn)入學(xué)習(xí)

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

      認(rèn)識(shí)process

      processnodejs內(nèi)置的一個(gè)對(duì)象,該對(duì)象提供了當(dāng)前有關(guān)nodejs進(jìn)程的信息。(例如獲取當(dāng)前進(jìn)程id,執(zhí)行平臺(tái)等與當(dāng)前執(zhí)行進(jìn)程相關(guān)的對(duì)象和方法)

      node process文檔

      process.arg

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

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

      console.log(process.arg) // node index.js [   'D:\software\nodejs\node.exe',   'D:\project\script\src\index.js' ]
      登錄后復(fù)制

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

      node index.js name=zhangsan age=18
      登錄后復(fù)制

      [   'D:\software\nodejs\node.exe',   'D:\project\script\src\index.js',   'name=zhangsan',   'age=18' ]
      登錄后復(fù)制

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

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

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

      例如在esbuild構(gòu)建工具中

      esbuild app.jsx --bundle --outfile=out.js
      登錄后復(fù)制

      例如在vite構(gòu)建工具中

      vite --config my-config.js
      登錄后復(fù)制

      修改一下上面的命令為

      node index.js --name=zhangsan --age=18
      登錄后復(fù)制

      將會(huì)得到如下輸出結(jié)果

      [   'D:\software\nodejs\node.exe',   'D:\project\script\src\index.js',   '--name=zhangsan',   '--age=18' ]
      登錄后復(fù)制

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

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

      [   '--name=zhangsan',   '--age=18' ]
      登錄后復(fù)制

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

      • process.argv數(shù)組,并切片從下標(biāo)2開始
      • 判斷數(shù)組中的每個(gè)值是否為--開頭,是則視為用戶傳入?yún)?shù)
      • 同樣進(jìn)行切片操作,獲取下標(biāo)2開始的字符,再通過=區(qū)分出對(duì)應(yīng)的keyvalue,其返回的是[key,value]
      • 最后,將這個(gè)二維數(shù)組傳入到Object.fromEntries轉(zhuǎn)換為一個(gè)對(duì)象

      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' }
      登錄后復(fù)制

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)