用户的每一个输入,城市安排在program对应option长名的字段的驼峰情势上,假如没有提供长名,则放在短名字段上。上例中,如行使: testcommander -p 111 -P 222 -b 333则依次存储在program的peppers、pineapple和bbqSauce上。
同时,commander提供多种验证方法,如正则表达式:
- program.option('-s --size <size>', 'Pizza size', /^(large|medium|small)$/i, 'medium')
则指定只能输入特定的值。
同时,commander提供一个方案,应承用户配置子呼吁。commander称之为Git气魄威风凛凛的子呼吁。
- var program = require('commander');
-
- program
- .version('0.1.0')
- .command('install [name]', 'install one or more packages')
- .command('search [query]', 'search with optional query')
- .command('list', 'list packages installed', {isDefault: true})
- .parse(process.argv);
这个例子中,假设呼吁行名字为pm,则当用户输入pm-install、pm-search或pm-list时辰,commander会实行在进口文件的统一级目次找到install、search或list,并交给这个文件去执行。
2. 进度条 progress
在编写web措施时辰,各人常常会展示一个进度条。用以缓解用户在守候时辰的焦急。着实在呼吁行措施中也会有这种交互方法。好比wget就会在下载进程中给出进度提醒。
在NodeJS中也有这样的结果可以行使。这就是progress包。下面的代码,运行功效是下载CentOS安装盘。在下载之中,会及时打印进度:
- const ProgressBar = require("progress")
- const request = require("request")
- const progress = require("request-progress")
- const fs = require("fs")
-
- const download = (url, headers, target, totalSize) => {
- let percent = 0
-
- const bar = new ProgressBar('下载中: ├:bar┤ 完成:percent 预估完成时刻:eta秒 用时:elapseds', {
- total: 100,
- complete: "█",
- incomplete: "─",
- width: 60
- })
-
- let opt = {
- headers,
- url: url
- }
-
- return new Promise((resolve, reject) => {
- progress(request.get(opt))
- .on('progress', function (state) {
- let progressFix = ((state.percent) * 100).toFixed(2)
- delta = progressFix - percent
- bar.tick(delta)
- percent = progressFix
- })
- .on("error", () => {
- return reject()
- })
- .on('end', () => {
- bar.tick(100 - percent)
- console.log('n')
- return resolve(target)
- })
- .pipe(fs.createWriteStream(target));
- })
- }
-
- const foo = {
- getHeaders: () => {
- const headers = {
- 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
- 'Accept-Charset': 'UTF-8,*;q=0.5',
- 'Accept-Encoding': 'gzip,deflate,sdch',
- 'Accept-Language': 'en-US,en;q=0.8',
- 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0'
- }
-
- return Object.assign({}, headers)
- },
-
- download: function (url, target, totalSize){
- let headers = this.getHeaders()
- headers = Object.assign(headers)
-
- download(url, headers, target, totalSize)
- }
- }
-
-
- foo.download("http://mirrors.cmich.edu/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso",
- "CentOS-7-x86_64-DVD-1810.iso", 4508876.8
- )
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|