노드의 명령줄에서 매개변수를 가져오는 방법

青灯夜游
풀어 주다: 2022-11-09 20:56:24
앞으로
2580명이 탐색했습니다.

노드의 명령줄에서 매개변수를 가져오는 방법

在开发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' }
로그인 후 복사

更多编程相关知识,请访问:编程教学!!

위 내용은 노드의 명령줄에서 매개변수를 가져오는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:juejin.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!