成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

node命令行小工具開發(fā)【翻譯小工具】

Yang_River / 1450人閱讀

摘要:命令行工具開發(fā)有許多命令行工具。現(xiàn)在我們就用來開發(fā)一個(gè)實(shí)用的命令行小工具一初探一個(gè)最簡(jiǎn)單的命令行工具首先我們新建一目錄,然后執(zhí)行生成文件新建一目錄并在目錄下創(chuàng)建一個(gè)執(zhí)行我們可以看到終端輸出。。

node命令行工具開發(fā)
NodeJs有許多命令行工具。它們?nèi)职惭b,并提供一個(gè)命令供我們使用,完成相應(yīng)的功能。 現(xiàn)在我們就用node來開發(fā)一個(gè)實(shí)用的命令行小工具
一.初探 一個(gè)最簡(jiǎn)單的命令行工具

1.首先我們新建一目錄,然后執(zhí)行npm init生成package.json文件

2.新建一bin目錄并在目錄下創(chuàng)建一個(gè)hi.js

#! /usr/bin/env node
console.log("hi")

執(zhí)行node hi.js我們可以看到終端輸出‘hi’。。當(dāng)然這并不是我們要的命令行工具,我們需要直接運(yùn)行hi就可出現(xiàn)結(jié)果

3.現(xiàn)在我們告訴npm可執(zhí)行文件是哪個(gè),在package.json里添加如下信息:

 "bin": {
    "hi": "bin/hi.js"
  }

npm link

現(xiàn)在我們執(zhí)行npm link啟用命令行,現(xiàn)在再試試在終端直接輸入hi命令,這次我們可以如愿見到結(jié)果

處理參數(shù)

命令行參數(shù)可通過系統(tǒng)變量process.argv獲取。 process.argv返回一個(gè)數(shù)組 第一個(gè)是node 第二個(gè)是腳本文件 第三個(gè)是輸入的參數(shù),process.argv[2]開始得到才是真正的參數(shù)部分

  #! /usr/bin/env node

let argv = process.argv.slice(2)
let yourName = argv[0]
console.log(`hi, ${yourName}!`)

// 執(zhí)行 hi liu
// hi, liu!
Commander.js

對(duì)于參數(shù)處理,我們一般使用commander,commander是一個(gè)輕巧的nodejs模塊,提供了用戶命令行輸入和參數(shù)解析強(qiáng)大功能如:自記錄代碼、自動(dòng)生成幫助、合并短參數(shù)(“ABC”==“-A-B-C”)、默認(rèn)選項(xiàng)、強(qiáng)制選項(xiàng)、命令解析、提示符

$ npm install commander --save
#!/usr/bin/env node

/**
 * Module dependencies.
 */

var program = require("commander")

program
  .version("0.0.1")
  .option("-p, --peppers", "Add peppers")
  .option("-P, --pineapple", "Add pineapple")
  .option("-b, --bbq-sauce", "Add bbq sauce")
  .option("-c, --cheese [type]", "Add the specified type of cheese [marble]", "marble")
  .parse(process.argv)

console.log("you ordered a pizza with:")
if (program.peppers) console.log("  - peppers")
if (program.pineapple) console.log("  - pineapple")
if (program.bbqSauce) console.log("  - bbq")
console.log("  - %s cheese", program.cheese)
Commander API

Option(): 初始化自定義參數(shù)對(duì)象,設(shè)置“關(guān)鍵字”和“描述”

Command(): 初始化命令行參數(shù)對(duì)象,直接獲得命令行輸入

Command#command(): 定義一個(gè)命令名字

Command#action(): 注冊(cè)一個(gè)callback函數(shù)

Command#option(): 定義參數(shù),需要設(shè)置“關(guān)鍵字”和“描述”,關(guān)鍵字包括“簡(jiǎn)寫”和“全寫”兩部分,以”,”,”|”,”空格”做分隔。

Command#parse(): 解析命令行參數(shù)argv

Command#description(): 設(shè)置description值

Command#usage(): 設(shè)置usage值

更多參考 commander官網(wǎng)

除了commander外,yargs也是一個(gè)優(yōu)秀的命令行參數(shù)處理模塊

二.開發(fā)命令行翻譯工具 1.新建并初始化項(xiàng)目

新建 文件夾translator/進(jìn)入目錄下執(zhí)行npm init 生成package.json文件

npm install commander superagent cli-table2 --save

cli-table2命令行表格輸出

superagent用于http請(qǐng)求

新建bin/translator.js文件,并加入package.json文件中

 "bin": {
    "translator": "bin/translator.js"
  },

然后

npm link

這里我們會(huì)用到有道API
一切準(zhǔn)備就緒我們就可以進(jìn)行編碼了

2.coding

由于代碼量很小,這里就直接貼代碼,在代碼中以注釋講解

#! /usr/bin/env node
// 引入需要的模塊
const program = require("commander")
const Table = require("cli-table2") // 表格輸出
const superagent = require("superagent") // http請(qǐng)求
// 初始化commander
program
    .allowUnknownOption()
    .version("0.0.1")
    .usage("translator  [input]")

// 有道api
const API = "http://fanyi.youdao.com/openapi.do?keyfrom=toaijf&key=868480929&type=data&doctype=json&version=1.1"

// 添加自定義命令
program
    .command("query")
    .description("翻譯輸入")
    .action(function(word) {
        // 發(fā)起請(qǐng)求
        superagent.get(API)
        .query({ q: word})
        .end(function (err, res) {
            if(err){
                console.log("excuse me, try again")
                return false
            }
            let data = JSON.parse(res.text)
            let result = {}

            // 返回的數(shù)據(jù)處理
            if(data.basic){
                result[word] = data["basic"]["explains"]
            }else if(data.translation){
                result[word] = data["translation"]
            }else {
                console.error("error")
            }

            // 輸出表格
            let table = new Table()
            table.push(result)
            console.log(table.toString())
        })
    })

// 沒有參數(shù)時(shí)顯示幫助信息
if (!process.argv[2]) {
    program.help();
    console.log();
}

program.parse(process.argv)

現(xiàn)在在終端中愉快的使用translator

$ translator
Usage:  translator  [input]
  Commands:
    query   翻譯輸入
  Options:
    -h, --help     output usage information
    -V, --version  output the version number
三.小結(jié)

了解nodeJs 可執(zhí)行腳步

了解命令行參數(shù)解析

了解commander,cli-table2,superagent等第三方模塊

拋磚引玉,更多請(qǐng)參考各個(gè)模塊的官方示例及API文檔

相關(guān)鏈接

CommanderJs

cli-table2

superagent

Node.js 命令行程序開發(fā)教程-阮一峰

Commander寫自己的Nodejs命令-粉絲日志

原文鏈接:xingxin.me

大家可以關(guān)注我的公眾號(hào),一起玩耍。有技術(shù)干貨也有扯淡亂談,關(guān)注回復(fù)[888]領(lǐng)取福利

左手代碼右手磚,拋磚引玉

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82046.html

相關(guān)文章

  • 開發(fā)一個(gè)Node命令玩具全過程--高顏統(tǒng)計(jì)工具

    摘要:相信熟悉系統(tǒng)的,對(duì)于一些等命令用起來應(yīng)該愛不釋手,這也是我想要開發(fā)一個(gè)便捷命令行的初衷,其次就是記錄一個(gè)完整開源小玩具的全過程。 背景 命令行工具對(duì)于我們來說非常的熟悉,一些命令行的操作也極大的簡(jiǎn)化了我們的日常工作。本文就基于我寫的一個(gè)Node命令行代碼計(jì)數(shù)器來進(jìn)行展開。 相信熟悉linux系統(tǒng)的,對(duì)于一些ps,grep,cp,mv…等命令用起來應(yīng)該愛不釋手,這也是我想要開發(fā)一個(gè)便捷命...

    ytwman 評(píng)論0 收藏0
  • Node命令工具開發(fā)【看段子工具

    摘要:我們的小項(xiàng)目就初始化成功了,就可以認(rèn)真思考代碼了首先分析糗事百科我們打開糗事百科會(huì)發(fā)現(xiàn)它的還是很簡(jiǎn)單,由于我們只是爬取段子所以如下,就是頁(yè)數(shù)。 Node命令行工具開發(fā)【看段子】 你有沒有上班想看笑話卻又怕領(lǐng)導(dǎo)發(fā)現(xiàn)的經(jīng)歷?現(xiàn)在我們就用幾十行代碼寫一個(gè)命令行看笑話段子的小程序,從此無需擔(dān)心領(lǐng)導(dǎo)的視察。這篇文章和上一篇差不多都是命令行小工具開發(fā),不過本篇更偏向于小爬蟲的開發(fā) 總覽:命令行看段...

    kelvinlee 評(píng)論0 收藏0
  • 線上出bug了?別怕,這么定位!

    摘要:由于現(xiàn)在構(gòu)建工具盛行,前端部署的代碼都是經(jīng)過編譯,壓縮后的,于是乎,就扮演了一個(gè)十分重要的角色,用來作為源代碼和編譯代碼之間的映射,方便定位問題。源代碼的標(biāo)識(shí),如果無法獲取,返回。 摘要: Source Map還是很神奇的。 原文:線上出bug了?別怕,這么定位! 公眾號(hào):前端小苑 Fundebug經(jīng)授權(quán)轉(zhuǎn)載并修改,版權(quán)歸原作者所有。 工作中,生產(chǎn)環(huán)境代碼是編譯后代碼,搜集到報(bào)錯(cuò)...

    greatwhole 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<