利用 JavaScript 构建命令行应用


Posted in Javascript onNovember 17, 2021

前言:

JavaScript 是一种为 Web 开发的语言,但它的用处已经远远超出了互联网的范畴。由于 Node.js Electron 这样的项目,JavaScript 既是一种通用的脚本语言,也是一种浏览器组件。有专门设计的 JavaScript 库来构建命令行界面。是的,你可以在你的终端中运行 JavaScript

现在,当你在终端中输入一个命令时,一般都有 选项 ,也叫  开关 或  标志 ,你可以用来修改命令的运行方式。这是由  POSIX 规范 定义的一个有用的惯例,所以作为一个程序员,知道如何检测和解析这些选项是很有帮助的。要从 JavaScript 获得此功能,使用旨在简化构建命令行界面的库很有用。我最喜欢的是  Commander.js 。它很简单,很灵活,而且很直观。

1、安装 node

要使用 Commander.js 库,你必须安装 Node.js 。在 Linux 上,你可以用你的包管理器安装 Node。例如,在 FedoraCentOSMageia 和其他系统上:

$ sudo dnf install nodejs

Windows macOS 上,我们可以 从nodejs.org 网站下载安装程序 。

2、安装 Commander.js

要安装 Commander.js,请使用 npm 命令:

$ npm install commander

3、 JavaScript 代码中添加一个库

JavaScript 中,你可以使用 require 关键字在你的代码中包含(或者导入,如果你习惯于 Python)一个库。创建一个名为  example.js 的文件,并在你喜欢的文本编辑器中打开它。在顶部添加这一行,以包括 Commander.js 库:

const { program } = require('commander');

4、JavaScript 中的选项解析

要解析选项,你必须做的第一件事是定义你的应用可以接受的有效选项。Commander.js 库可以让你定义短选项和长选项,同时还有一个有用的信息来澄清每个选项的目的。

program
  .description('A sample application to parse options')
  .option('-a, --alpha', 'Alpha')
  .option('-b, --beta <VALUE>', 'Specify a VALUE', 'Foo');

第一个选项,我称之为 --alpha (简写  -a ),是一个布尔型开关:它要么存在,要么不存在。它不需要任何参数。第二个选项,我称之为  --beta (简写  -b ),接受一个参数,甚至在你没有提供任何参数的情况下指定一个默认值。

5、访问命令行数据

当你定义了有效的选项,你就可以使用长的选项名称来引用这些值:

program.parse();

const options = program.opts();
console.log('Options detected:');

if (options.alpha) console.log('alpha');
 
const beta = !options.beta ? 'no' : options.beta;
console.log('beta is: %s', beta);

6、运行应用

试着用 node 命令来运行它,首先不使用选项:

$ node ./example.js 
Options detected: 
beta is: Foo

在用户没有覆盖的情况下, beta 的默认值被使用。

再次运行它,这次使用选项:

$ node ./example.js --beta hello --alpha
Options detected: 
alpha
beta is: hello

这次,测试脚本成功检测到了选项 --alpha ,以及用户提供的  --beta 选项的值。

7、选项解析

下面是完整的演示代码供你参考:

const { program } = require('commander');

program
  .description('A sample application to parse options')
  .option('-a, --alpha', 'Alpha')
    .option('-b, --beta <VALUE>', 'Specify a VALUE', 'Foo');

program.parse();

const options = program.opts();
console.log('Options detected:');

console.log(typeof options);

if (options.alpha) console.log(' * alpha');
const beta = !options.beta ? 'no' : options.beta;
console.log(' * beta is: %s', beta);

在该项目的 Git 仓库 中还有更多例子。

对任何应用来说,包括用户的选项都是一个重要的功能,而 Commander.js 使它很容易做到。除了 Commander.js,还有其他库,但我觉得这个库使用起来很方便快捷。你最喜欢的 JavaScript 命令行构建器是什么?

到此这篇关于利用 JavaScript 构建命令行应用的文章就介绍到这了,更多相关 JavaScript 构建命令行应用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
Aug 21 Javascript
jquery滚动特效集锦
Jun 03 Javascript
js控制文本框输入的字符类型方法汇总
Jun 19 Javascript
一道JS前端闭包面试题解析
Dec 25 Javascript
Js+Ajax,Get和Post在使用上的区别小结
Jun 08 Javascript
jQuery Validate插件自定义验证规则的方法
Dec 27 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
Jun 01 Javascript
老生常谈JavaScript面向对象基础与this指向问题
Oct 16 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
Jul 26 Javascript
微信小程序实现的一键连接wifi功能示例
Apr 24 Javascript
详解babel升级到7.X采坑总结
May 12 Javascript
vue-cli脚手架的.babelrc文件用法说明
Sep 11 Javascript
Ajax实现异步加载数据
Nov 17 #Javascript
36个正则表达式(开发效率提高80%)
Nov 17 #Javascript
Javascript 解构赋值详情
Nov 17 #Javascript
javascript Number 与 Math对象的介绍
Nov 17 #Javascript
javascript条件式访问属性和箭头函数介绍
Nov 17 #Javascript
JavaScript 对象创建的3种方法
Nov 17 #Javascript
JavaScript 中for/of,for/in 的详细介绍
Nov 17 #Javascript
You might like
7个超级实用的PHP代码片段
2011/07/11 PHP
PHP的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
php中inlcude()性能对比详解
2012/09/16 PHP
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
详解php用curl调用接口方法,get和post两种方式
2017/01/13 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
2019/02/12 PHP
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
js取值中form.all和不加all的区别介绍
2014/01/20 Javascript
jQuery照片伸缩效果不影响其他元素的布局
2014/05/09 Javascript
改变checkbox默认选中状态及取值的实现代码
2016/05/26 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
简单理解js的冒泡排序
2016/12/19 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
Bootstrap导航条学习使用(二)
2017/02/08 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
Nodejs中Express 常用中间件 body-parser 实现解析
2017/05/22 NodeJs
react-redux中connect()方法详细解析
2017/05/27 Javascript
详谈innerHTML innerText的使用和区别
2017/08/18 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
2017/11/15 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
如何在Express4.x中愉快地使用async的方法
2020/11/18 Javascript
python实现根据月份和日期得到星座的方法
2015/03/27 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
python编程进阶之类和对象用法实例分析
2020/02/21 Python
日本订房网站,预订日本星级酒店/温泉旅馆:Relux(支持中文)
2020/01/03 全球购物
大学生简单自荐信
2013/11/10 职场文书
女大学生自我鉴定
2013/12/09 职场文书
幼儿园大班开学教师寄语
2014/04/03 职场文书
交通安全责任书范本
2014/07/24 职场文书
学校党员对照检查材料
2014/08/28 职场文书
2014年组织委员工作总结
2014/12/01 职场文书
中国汉字听写大会观后感
2015/06/02 职场文书