基于Node的命令行小工具——中英文翻译器

目录

导语

开发流程

1.准备工作

1.1 项目需求
1.2 项目功能描述
1.3 项目实施思路

2. 实施项目

2.1 node包的初始化
2.2 命令行工具的配置与测试
2.3 生产阶段
2.4 发布阶段

3. 演示效果图

后记

声明


导语

最近开发了一款简单的基于Node命令行小工具,可以进行中英文互译,现在分享给各位童鞋参考一番,源码地址已发布到小羊的【Github】,有兴趣的同学可以Star或Fork一下,以便日后可以亲手开发一个作为自己的小项目;

本篇文章主要是将在开发一个小项目时,在开发之前脑海里面大致应该有的思路是什么;


开发流程

1. 准备工作

1.1 项目需求
  • 制作一个可翻译的语言命令行小工具;
1.2 项目功能描述
  • 可翻译功能
  • 中英文互译
  • 格式化处理
1.3 项目实施思路
  • 环境部署
    • gitbash、node安装完毕;
    • node包的初始化;
    • 命令行工具的配置与测试;
  • 生产阶段
    • js文件;
    • 依赖;
  • 发布阶段
    • 文档描述;

2. 实施项目

2.1 node包的初始化;

新建测试项目目录,在项目目录下使用

$ npm init

初始化node包,然后在项目目录自动生成package.json配置文件,关于package.json可参考[阮一峰博客]


基于Node的命令行小工具——中英文翻译器_第1张图片
2.2 命令行工具的配置与测试;

新建一个bin文件夹,在宾文件夹内新建一个js文件用于命令行工具的测试;

在进入vim编辑器后,第一行配置一段#! /usr/bin/env node,表示当该js文件使用特定命令时是在node环境下运行的;


完成上述步骤后,在packjson.js中配置如下信息:

基于Node的命令行小工具——中英文翻译器_第2张图片

意思是在gitbash上运行命令demo,将直接在node环境在运行test.js文件;

然后使用:

$ npm publish

发布到npm管理平台;
发布之前如果没有申请用户名使用:

$ npm adduser

有的话如果没有登录过,则使用

$ npm login

注意每次修改文件并发布的话,都要改动版本号:

基于Node的命令行小工具——中英文翻译器_第3张图片

查看测试结果:

基于Node的命令行小工具——中英文翻译器_第4张图片

okay,没问题,则可以正式进入开发阶段:

2.3 开发阶段
  • 安装依赖——yargs和cololrs
    yargs模块可以捕获命令的输入参数,用法详见其官方文档,文档虽然很长,但是我们所用的语法很少,只有两个,自己参详;
    colors模块用于代码高亮;
    基于Node的命令行小工具——中英文翻译器_第5张图片

    在项目目录下使用

$ npm install yargv --dev
$ npm instal colors --dev

安装依赖;

  • js文件部署
    核心业务逻辑分析如下,看官可以对照参考:
#! /usr/bin/env node

//业务逻辑
//1.turnout命令+中英文[args,--read,-r]
//捕获参数,使用yargs.argv对象;
//2.将捕获到的用户的输入参数传入有道云api的q(key)中,使用字符串拼接;
//3.使用http模块发送请求;
//4.成功接收数据后,对数据进行格式化处理;

var colors = require('colors');
var argv = require('yargs').argv,
    queryStr = encodeURI((argv._).join(" ")),
    read = argv.r || argv.read; 

if(!queryStr){
    console.log('word or sentence required...')
}else {
    sendInfo(queryStr)
}

if(read){
    console.log('waiting for the new function...')
}


function format(json){
    console.log('\n')
    
    var data = JSON.parse(json),
        pronTitle = "发音:",
        pron = data.basic.phonetic || "无",
        mainTitle = "翻译:",
        mainTrans = "",
        webTitle = "网络释义:",
        webTrans = "",
        template = "";

    var basic = data.basic,web = data.web;

    if(basic?basic:""){
        for(var i = 0 ; i< basic.explains.length ; i++){
            mainTrans += "\n\n"+basic.explains[i];
        }
    }
    
    if(web?web:""){
        for(var i = 0 ; i< web.length ; i++){
             webTrans += "\n\n"+(i+1)+": "+web[i].key.red.bold+"\n\n"
                      +  web[i].value.join(',');
        }
    }

    template = pronTitle.red.bold+pron+ "\n\n"
             + mainTitle.green.bold+mainTrans+"\n\n"
             + webTitle.blue.bold+webTrans;

    console.log(template);

}

function sendInfo(query){
        //发送翻译请求
    var http = require('http');

    // 1.用于请求的选项
    var options = {
       host: 'fanyi.youdao.com',
       port: '80',
       path: '/openapi.do?keyfrom=translation-tool&key=1730699468&type=data&doctype=json&version=1.1&q='+query    
    };

    // 处理响应的回调函数
    var callback = function(response){
       // 不断更新数据
       response.on('data', function(data) {
          format(data)
       });
       
       response.on('end', function() {
          // 数据接收完成
          console.log('\n')
          console.log("---------------");
       });
    }
    // 向服务端发送请求
    var req = http.request(options, callback);
    req.end();
}
2.4 发布阶段

除了使用

$ npm publish

发布到npm平台,完整的项目还应该有文档说明;

  • 文档描述

prue-translator

A simple CLI for translating between English and Chinese

Installation

Prerequisites:Node.jsandGit.

$ npm install -g prue-translator

Usage

$ turnout[translate,interpret] [--read][-r]

Version

v1.0.12

  1. able to interpret words between English and Chinese;
  2. highlight the result of interpretation;

v.1.1.0

  1. add extent commands with translate and interpret for translation;
    v.1.1.1
  2. add English Document for this CLI;

License

MIT


3. 演示效果图

  • 翻译中文
基于Node的命令行小工具——中英文翻译器_第6张图片
  • 翻译英文
基于Node的命令行小工具——中英文翻译器_第7张图片
  • 翻译句子
基于Node的命令行小工具——中英文翻译器_第8张图片

后记

关于bug

colors模块加载后,无法正确高亮代码;
无法显示特殊的音标;
上面两个问题暂时未解决,如有大神,欢迎指点;

声明

这个命令行小工具是小羊在饥人谷的若愚老师指导下以及参考谷内王康同学的作品完成的,如有更多问题欢迎进入饥人谷询问;
本文版权归作者和饥人谷所有,如需转载请私信;

你可能感兴趣的:(基于Node的命令行小工具——中英文翻译器)