如何创建一个NodeJs命令行交互项目?

时间: 2019-10-07阅读: 311标签: 项目

方法一:通过原生的NodeJs API,方法如下:

#!/usr/bin/env node
# test.js
var argv = process.argv;
console.log(argv)

通过以下命令执行:

node test.js param1 --param2 -param3

结果输出如下:

[ '/usr/local/Cellar/node/10.10.0/bin/node',
  'test.js',
  'param1',
  '--param2',
  '-param3' ]

可见,argv中第一个参数为node应用程序的路径,第二个参数为被执行的js程序文件,其余为执行参数。


方法二:通过yargs获取命令行参数,方法如下: 首先,需要在项目中引入该模块: npm install --save args 然后,创建JS可执行程序,如下:

#!/usr/bin/env node

var args = require('yargs');

const argv = args.option('n', {
alias : 'name',
demand: true,
default: 'tom',
describe: 'your name',
type: 'string'
})
.usage('Usage: hello [options]')
.example('hello -n bob', 'say hello to Bob')
.help('h')
.alias('h', 'help')
.argv;

console.log('the args:', argv)

执行如下命令:

node test.js -h

显示结果如下: Usage: hello [options]

选项: --version 显示版本号 [布尔] -n, --name your name [字符串] [必需] [默认值: "tom"] -h, --help 显示帮助信息 [布尔]

示例:

  hello -n bob  say hello to Bob

执行如下命令:

node test.js -n Bobbbb 'we are friends'

结果显示如下:

the args: { _: [ 'we are friends' ],
  n: 'Bobbbb',
  name: 'Bobbbb',
  '$0': 'test.js' }

可见,通过yargs开源NPM包,可以很容易定义命令行格式,并方便地获取各种形式的命令行参数。 通过yargs虽然可以很方便地定义并获取命令行参数,但不能很好地解决与命令行的交互,而且参数的数据类型也比较受局限。所以,我们看一下另外一个开源项目。


方法三:通过inquirer开源项目实现交互命令 创建test.js文件:

#!/usr/bin/env node

var inquirer = require("inquirer");
inquirer
  .prompt([
    {
      type: "input",
      name: "name",
      message: "controller name please",
      validate: function(value) {
        if (/.+/.test(value)) {
          return true;
        }
        return "name is required";
      }
    },
    {
      type: "list",
      name: "type",
      message: "which type of conroller do you want to create?",
      choices: [
        { name: "Normal Controller", value: "", checked: true },
        { name: "Restful Controller", value: "rest" },
        { name: "View Controller", value: "view" }
      ]
    }
  ])
  .then(answers => {
    console.log(answers);
  });

执行程序:

node test.js

输出结果:

? controller name please test
? which type of conroller do you want to create? Normal Controller
{ name: 'test', type: '' }


站长推荐

1.阿里云: 本站目前使用的是阿里云主机,安全/可靠/稳定。点击领取2000元代金券、了解最新阿里云产品的各种优惠活动点击进入

2.腾讯云: 提供云服务器、云数据库、云存储、视频与CDN、域名等服务。腾讯云各类产品的最新活动,优惠券领取点击进入

3.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/6284

物联网项目选择JavaScript的5大理由

在一个以数字化为主导的世界中,物联网(IoT)在改变我们的生活和开展业务方式方面发挥着至关重要的作用。从智能生活到工作场所协作,以及与现场员工的联系,物联网将一如既往地节省时间和提高生产力。

为什么node不适合大型项目?

首先要明确什么是大型应用,其实这是仁者见仁、智者见智的问题,并且它是一个哲学问题,不是一个技术问题。假如有人问你,一个可以进行线上销售的网站,比如优衣库,大不大?你可能会说大,因为这与你平常所见的博客

flv.js在vue项目的应用

先取到接口数据,后播放。使用async await关键字实现顺序加载视频 伪代码,在mounted生命周期内渲染视频,lv.js在播放前需要检查是否已创建实例,如果已有实例,则销毁,在重新创建播放器实例。

node适合做什么项目

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,一个让 JavaScript 运行在服务端的开发平台。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。善于I/O,不善于计算。因为Node.js最擅长的就是任务调度,如果你的业务有很多的 CPU 计算

Vue如何刷新当前页面

项目需求是:在课程详情页 点击 相关课程 还在当前页面看此课程详情;功能实现:这时候点击相关课程需要重新加载刷新当前路由;this.$router.go(0)。这种方法虽然代码很少,只有一行,但是体验很差。

node适合用于什么项目?

Node是一个基于Chrome JavaScript运行时建立的平台, 可以方便地搭建响应速度快、易于扩展的网络应用。Node 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用

两个项目一个webpack包

文件依赖关系错综复杂,静态资源请求效率低,模块化支持不友好,浏览器对高级JS兼容程度低?那就是时候了解webpack了,webpack 是一个JavaScript 应用程序的静态模块打包构建器。在处理应用程序时, webpack 会递归地构建一个依赖关系图

通过浏览器工作台启动本地项目

一直对通过浏览器工作台启动本地项目感兴趣,类似 vue-cli3 中提供的 vue ui,在浏览器中打开工作台,就能够创建、启动、停止、打包、部署你的项目,很好奇这一系列背后的实现原理。

Nginx如何实现一个域名访问多个项目

最近在个人的多个项目部署中遇到这样一个问题,一个域名如何实现多个项目的访问。因为不想自己单独去申请域名证书和域名配置,便想到了这个方案,结合Nginx的location功能实现了自己的需求,便记录下来。示例中是以PHP的项目演示

spa项目如何计算首屏

对于首屏的定义,浏览器没有给出标准的指标,因为不同网站对于首屏的要求也是不尽相同的。我们从谷歌的第一次有效时间(first meaningfull paint)得到了一些启发,例如,一个新闻网站文字跟字体对于它来说是更重要的

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!

文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全运营推广