美文网首页
Node 模块化

Node 模块化

作者: 不要和我名字一样 | 来源:发表于2017-06-04 16:11 被阅读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'))、第三方模块

    相关文章

      网友评论

          本文标题:Node 模块化

          本文链接:https://www.haomeiwen.com/subject/ktivfxtx.html