利用 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 相关文章推荐
javascript或asp实现的判断身份证号码是否正确两种验证方法
Nov 26 Javascript
JQUBAR1.1 jQuery 柱状图插件发布
Nov 28 Javascript
JS异常处理的一个想法(sofish)
Mar 14 Javascript
JS 退出系统并跳转到登录界面的实现代码
Jun 29 Javascript
使用js画图之饼图
Jan 12 Javascript
JavaScript获取按钮所在form表单id的方法
Apr 02 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
Aug 01 Javascript
angular 用拦截器统一处理http请求和响应的方法
Jun 08 Javascript
微信小程序引用公共js里的方法的实例详解
Aug 17 Javascript
Node.js使用Koa搭建 基础项目
Jan 08 Javascript
jQuery访问json文件中数据的方法示例
Jan 28 jQuery
vue 使用rules对表单字段进行校验的步骤
Dec 25 Vue.js
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
php 无限级分类,超级简单的无限级分类,支持输出树状图
2014/06/29 PHP
PHP获取当前所在目录位置的方法
2014/11/26 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
PHP数据的提交与过滤基本操作实例详解
2016/11/11 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
2019/05/06 PHP
PHP7原生MySQL数据库操作实现代码
2020/07/03 PHP
javascript拖拽上传类库DropzoneJS使用方法
2013/12/05 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
jQuery结合HTML5制作的爱心树表白动画
2015/02/01 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
JS实现的自定义水平滚动字体插件完整实例
2016/06/17 Javascript
第一次接触Bootstrap框架
2016/10/24 Javascript
js实现交通灯效果
2017/01/13 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
详解微信小程序调起键盘性能优化
2018/07/24 Javascript
jquery实现拖拽添加元素功能
2020/12/01 jQuery
Python使用Paramiko模块编写脚本进行远程服务器操作
2016/05/05 Python
简介Python的collections模块中defaultdict类型的用法
2016/07/07 Python
轻松掌握python设计模式之访问者模式
2016/11/18 Python
Python 3.x 连接数据库示例(pymysql 方式)
2017/01/19 Python
银行实习自我鉴定
2013/10/12 职场文书
初入社会应届生求职信
2013/11/18 职场文书
学生自我鉴定
2013/12/18 职场文书
新护士岗前培训制度
2014/02/02 职场文书
工厂会计员职责
2014/02/06 职场文书
个人廉洁自律承诺书
2014/03/27 职场文书
办公室务虚会发言材料
2014/10/20 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
创业计划书之婴幼儿游泳馆
2019/09/11 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers
JavaScript控制台的更多功能
2021/04/28 Javascript
Java 写一个简单的图书管理系统
2022/04/26 Java/Android