Node 模块化

2017-06-04  本文已影响31人  不要和我名字一样

模块开发流程

模块开发流程.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'))、第三方模块

上一篇下一篇

猜你喜欢

热点阅读