模块开发流程
模块的定义
实现命令行计算器
首先要实现命令行计算器,需要三步: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'))
、第三方模块