为了账号安全,请及时绑定邮箱和手机立即绑定

【了解npm和node下】开发一个获取天气命令行工具;process.argv

标签:
Node.js

参数

process.argv

在js文件输入这个参数可以在执行js的时候得到你在node命令行输入信息如下:


webp

image.png


得到的结果是一个数组

数组第一个值 
'/Users/cmmac/.nvm/versions/node/v9.3.0/bin/node'---代表命令行中输入的node模块

数组第二个值'/Users/cmmac/vscode/npm/dome-2/index.js'---代表命令行中输入的index.js文件

输入命令行时我们在后面再加一个参数:得到如下图结果


webp

image.png


如图所示数组的第三个值就是我们命令行输入的‘hello’

因此通过这个参数我们可以不做命令行输入的内容制作我们的我们的命令行工具


自作一个简单的命令行工具

新建项目:
同样通过npm init 初始化(初始化配置信息就不说了按步骤来就好)


webp

image.png

index.js文件写入简单的代码如下图


webp

image.png


其中写入

#!/usr/bin/env node

表示这个文件默认用node执行;这样后面的使用这个命令行工具时候就不需要输入node index.js
到这里我们这个命令行的功能就完成了
执行给定的命令行 后台执行console.log('命令行测试')打印出'命令行测试'字符串


那我们要输入什么命令才会执行呢

我们已知有git或者npm的命令行只要输入git或者git xx 就能执行相应的命令;

这个时候我们打开package.json文件在里面添加一个字符串如下图


webp

image.png

这样我们的命令行的命令就是hello

然后按照前面的教程把这个包发布到npm

发布成功后我们通过全局安装下载这个包

npm install -g zeeliu-command-line-test

然后在命令行执行

hello

如下图


webp

image.png


天气预报命令行

同样是上面的文件;
修改里面的内容把命令改成mood 然后修改index.js的内容 做一个天气命令行工具;
当输入‘ mood 深圳   ’就出现深圳的天气

首先下载一个依赖包 ;request或者axios;用于发送ajax请求

然后完善index.js里的内容

由于天气api不提供中文搜索所以里面用了一个中文转拼音的依赖包

代码如下

#!/usr/bin/env nodevar axios = require('axios')var pinyin = require("node-pinyin")//console.log(process.argv)var cityidvar city = {}var data = {}if (process.argv[2]) {    if (ischinese(process.argv[2])) {        var str = ''
        var arr = pinyin(process.argv[2], { style: 'normal' })
        arr.forEach((e) => {
            str += e.join()
        });
        city.params = {            location: str
        }
    } else {
        city.params = {            location: process.argv[2]
        }
    }    //console.log(city)
    axios.get('https://weixin.jirengu.com/weather/cityid', city)
        .then(function (response) {            //console.log('进来了')
            getCityid(response)
            getWeather(data)
        })
        .catch(function (error) {            console.log('城市错误重新输入吧')            // console.log(error)
        })
} else {
    axios.get('https://weixin.jirengu.com/weather')
        .then(function (response) {            //console.log('进来了')
            console.log('下面是您所在地区的天气')            //console.log(response.data.weather[0])
            var weather = response.data.weather[0]            console.log('时间:' + weather.last_update)            console.log('城市:' + weather.city_name + '-----' + '城市ID:' + weather.city_id)            console.log('天气:' + weather.now.text + '-----' + '风向:' + weather.now.wind_direction + '-----' + '风力等级:' + weather.now.wind_scale)            console.log('温馨提示:' + weather.today.suggestion.travel.details)

        })
        .catch(function (error) {            console.log('出错了')            // console.log(error)
        })
}//判断输入的城市是否是中文function ischinese(s) {    var ret = true;    for (var i = 0; i < s.length; i++)
        ret = ret && (s.charCodeAt(i) >= 10000);    return ret;
}function getCityid(response) {
    cityid = response.data.results[0].id
    data.params = {        cityid: cityid
    }    //console.log(data)}function getWeather(id) {
    axios.get('https://weixin.jirengu.com/weather/now', id)
        .then(function (response) {            console.log('下面是您所查找的城市的天气信息')            //console.log(response.data.weather[0])
            var weather = response.data.weather[0]            console.log('时间:' + weather.last_update)            console.log('城市:' + weather.city_name + '-----' + '城市ID:' + weather.city_id)            console.log('天气:' + weather.now.text + '-----' + '风向:' + weather.now.wind_direction + '-----' + '风力等级:' + weather.now.wind_scale)            console.log('温馨提示:' + weather.today.suggestion.travel.details)
        })
        .catch(function (error) {            console.log('出错了')            // console.log(error)
        })

}



作者:动感超逗
链接:https://www.jianshu.com/p/b5d0e182175d


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消