Node 模块化

模块开发流程

模块开发流程.png

模块的定义

模块的定义

实现命令行计算器

首先要实现命令行计算器,需要三步:1、接收参数,2、分析参数,3、进行计算

1、接收参数

//process.argv:当前进程的命令行参数数组。
const args = process.argv.slice(2);//['node执行程序所在路径','当前脚本所在路径',..]

用户在输入的时候参数之间要用空格分开,不然会当成一个参数处理

2、分析参数

if (args.length !== 3) {
    console.log('参数不合法');
    throw new Error('参数不合法')
}
let parameter1 = args[0];
let operator = args[1];
let parameter2 = args[2];

3、进行计算

//let result = eval(`${parameter1} ${operator} ${parameter2}`);

let result;
switch (operator) {
    case '+':
        result = parseFloat(parameter1) + parseFloat(parameter2);
        break;
    case '-':
        result = parseFloat(parameter1) - parseFloat(parameter2);
        break;
    case '*':
        result = parseFloat(parameter1) * parseFloat(parameter2);
        break;
    case '/':
        result = parseFloat(parameter1) / parseFloat(parameter2);
        break;
    default:
        throw new Error("不支持的运算符")
}


console.log(result);

在进行计算的时候,第一种使用eval()这种方式,这种存在弊端,所以使用switch case这种方式.
switch case会显得复杂,我们现在把它抽象成一个模块,新建一个calculator.js文件,

/**
 * Created by 黄森 on 2017/6/4.
 */
    function convert(input) {
        return parseFloat(input);
    }

    function add(a, b) {
        return convert(a) + convert(b)
    }

    function sub(a, b) {
        return convert(a) - convert(b)
    }

    function mutiply(a, b) {
        return convert(a) * convert(b)
    }

    function divide(a, b) {
        return convert(a) / convert(b)
    }
    //es6自动属性
    module.exports={add,sub,mutiply,divide};

接下来只需要在计算那一步用require引入calculator.js文件即可,


//3 进行运算
const calc  = require('./module/calculator');  
let result;
switch (operator) {
    case '+':
        result = calc.add(parameter1,parameter2);
        break;
    case '-':
        result = calc.sub(parameter1,parameter2);;
        break;
    case '*':
        result = calc.mutiply(parameter1,parameter2);;
        break;
    case '/':
        result = calc.divide(parameter1,parameter2);;
        break;
    default:
        throw new Error("不支持的运算符")
}
console.log(result);

这样就可以实现一个模块化的代码;这种也就是模块分类里面的文件模块,模块可分为文件模块(自己定义的)、核心模块(系统自带如:(require('fs'))、第三方模块

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 为了更好的理解 Node.js 的 require 实现机制,我实现了一个简易的版本。我们node index.j...
    梁同桌阅读 3,177评论 0 1
  • 1. 最终实现的效果 2. 逻辑思路分析图 3. 模块分类 4. 需要使用的第三方包插件 5. 模块分类 app....
    Robyn_Luo阅读 1,313评论 0 0
  • 个人入门学习用笔记、不过多作为参考依据。如有错误欢迎斧正 目录 简书好像不支持锚点、复制搜索(反正也是写给我自己看...
    kirito_song阅读 7,202评论 1 37
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    w_zhuan阅读 8,979评论 2 41
  • 《本能》解析 好像从来没有做过这种事情,平时影评都比较抒情,这次的影评主要写推理解析。 线索:玫凯琳,尼克 玫凯琳...
    修一云阅读 3,459评论 0 0