当前位置: 首页 > 后端技术 > Node.js

node命令行小工具开发【翻译小工具】

时间:2023-04-03 19:55:25 Node.js

node命令行工具开发NodeJs有很多命令行工具。它们是全局安装的,并提供一个命令供我们使用来完成相应的功能。下面我们将使用node开发一个实用的命令行小工具1.最简单的命令行工具初步探索1.首先我们新建一个目录,然后执行npminit生成一个package.json文件2.创建一个新建bin目录并在该目录下新建一个目录Createahi.js#!/usr/bin/envnodeconsole.log("hi")执行nodehi.js,我们可以看到终端输出'hi'。.当然,这不是我们想要的命令行工具,我们需要直接运行hi,结果会出现3。现在我们告诉npm是哪个可执行文件,在package.json中添加如下信息:"bin":{"hi":"bin/hi.js"}npmlink现在我们执行npmlink开启命令行,现在尝试在终端直接输入hi命令,这次可以看到如愿以偿的结果了。处理参数命令行参数可以通过系统变量process.argv获取。process.argv返回一个数组。第一个是node,第二个是脚本文件,第三个是入参。Process.argv[2]开始获取真实参数部分#!/usr/bin/envnodeletargv=process.argv.slice(2)letyourName=argv[0]console.log(`hi,${yourName}!`)//执行hiliu//hi,liu!Commander.js对于参数的处理,我们一般使用Commander,commander是一个轻量级的nodejs模块,为用户命令行输入和参数解析提供了强大的功能,比如:自录代码、自动生成帮助、合并短参数(《ABC》"=="-A-B-C"),默认选项,强制选项,命令解析,提示$npminstallcommander--save#!/usr/bin/envnode/***模块依赖。*/varprogram=require('commander')program.version('0.0.1').option('-p,--peppers','Addpeppers').option('-P,--pineapple','添加菠萝').option('-b,--bbq-sauce','添加烧烤酱').option('-c,--cheese[type]','添加指定类型的奶酪[marble]','marble').parse(process.argv)console.log('你点了一份披萨:')if(program.peppers)console.log('-peppers')if(program.pineapple)console.log('-菠萝')if(program.bbqSauce)console.log('-bbq')console.log('-%scheese',program.cheese)CommanderAPIOption():初始化自定义参数对象,设置“关键字”和“描述”Command():初始化命令行参数对象,直接获取命令行输入Command#command():定义一个命令名Command#action():注册一个回调函数Command#option():定义参数需要设置“Keyword”和“Description”。做一个分隔线Command#parse():解析命令行参数argvCommand#description():设置描述值Command#usage():设置使用值更多参考Commander官网除了Commander,yargs也是一个优秀的命令行参数处理模块二、开发命令行翻译工具1、创建并初始化项目新建文件夹translator/进入目录,执行npminit生成package.json文件npminstallcommandersuperagentcli-table2--savecli-table2命令行表输出superagent用于http请求新建bin/translator.js文件,在package.json文件中添加"bin":{"translator":"bin/translator.js"},然后npmlink这里我们将使用有道API一切准备就绪,我们可以开始编码了2.编码由于代码量很少,这里直接贴代码,并在代码中注释说明#!/usr/bin/envnode//导入需要的模块constprogram=require('commander')constTable=require('cli-table2')//表输出constsuperagent=require('superagent')//http请求//初始化commanderprogram.allowUnknownOption().version('0.0.1').usage('translator[input]')//有道apiconstAPI='http://fanyi.youdao.com/openapi.do?keyfrom=toaijf&key=868480929&type=data&doctype=json&version=1.1'//添加自定义命令程序.command('query').description('翻译输入').action(function(word){//发起请求superagent.get(API).query({q:word}).end(function(err,res){if(err){console.log('对不起,再试一次')returnfalse}letdata=JSON.parse(res.text)letresult={}//返回数据处理if(data.basic){result[word]=data['basic']['explains']}elseif(data.translation){result[word]=data['translation']}else{console.error('error')}//输出表lettable=newTable()table.push(result)console.log(table.toString())})})//没有参数时显示帮助信息if(!process.argv[2]){program.help();console.log();}program.parse(process.argv)现在在终端中很高兴在$translatorUsage中使用翻译器:translator[input]命令:查询翻译输入选项:-h,--help输出用法信息-V,--versionoutput版本号3.总结了解nodeJs可执行步骤了解命令行参数解析了解commander、cli-table2、superagent等第三方模块。更多信息请参考各模块的官方示例和API文档。相关链接CommanderJscli-table2superagentNode.js命令行程序开发教程-阮一峰Commander自己写的Nodejs命令-粉丝日志