1.实现命令行计算器之前需要了解下如何动态获取用户输入的参数
process.argv
用法是
第一个是node
第二个是脚本文件
第三个是打印的任意参数
const args = process.argv;
console.log(args);
结果:
$ node test 123 hello
[ 'C:\\dev\\nodejs\\node.exe',
'D:\\phpStudy\\PHPTutorial\\WWW\\node\\test',
'123',
'hello' ]
2.计算器代码
//1.接收参数
const args = process.argv.slice(2);
//2.分析参数
if(args.length !== 3){
console.log('参数不合法');
// throw new Error('参数不合法');
}
$parm1 = args[0];
$operator = args[1];
$parm2 = args[2];
let result;
//3.进行运算
switch ($operator){
case '+':
result = parseFloat($parm1) + parseFloat($parm2);
break;
case '-':
result = parseFloat($parm1) - parseFloat($parm2);
break;
case '*':
case 'X':
result = parseFloat($parm1) * parseFloat($parm2);
break;
case '/':
result = parseFloat($parm1) / parseFloat($parm2);
break;
}
console.log(result);
3.模块化代码结构
Node采用的模块化结构是按照CommonJS规范。
模块与文件是一一对应关系,即加载一个模块,实际上就是加载对应的一个模块文件。
将操作拎出来放在一个文件中/module/calculator.js
// define(function(require, module, exports){
//在node中实现的是CommonJS规范,不需要define
function convert(input){
return parseFloat(input);
}
function add(param1,param2){
return convert(param1) + convert(param2);
}
function subtract(param1,param2){
return convert(param1) - convert(param2);
}
function mutiply(param1,param2){
return convert(param1) * convert(param2);
}
function divide(param1,param2){
return convert(param1) / convert(param2);
}
module.exports = {add, subtract, mutiply, divide};
//也可以写成以下形式
// module.exports = {
// add: add,
// subtract: subtract,
// mutiply: mutiply,
// divide: divide
// }
// })
主程序:
//1.接收参数
const args = process.argv.slice(2);
//2.分析参数
if(args.length !== 3){
console.log('参数不合法');
// throw new Error('参数不合法');
}
$parm1 = args[0];
$operator = args[1];
$parm2 = args[2];
let result;
//3.进行运算
const calc = require('./module/calculator');//引入模型
switch ($operator){
case '+':
result = calc.add($parm1,$parm2);
break;
case '-':
result = calc.subtract($parm1,$parm2);
break;
case '*':
case 'X':
result = calc.mutiply($parm1,$parm2);
break;
case '/':
result = calc.divide($parm1,$parm2);
break;
}
console.log(result);
网友评论