node 模块化开发,主要分为以下几个步骤:
![](https://img.haomeiwen.com/i16641848/b29dcc53fe23385b.jpg)
下面做一个简单地计算器,通过node REPL环境可计算结果。
![](https://img.haomeiwen.com/i16641848/2dc799687a7b6ab7.png)
非模块化代码如下
// 获取命令行参数
let argv = process.argv.slice(2);
let result = 0, arg1 = parseFloat(argv[0]), arg2 = parseFloat(argv[2]);
switch(argv[1]){
case '+':
result = arg1+arg2;
break;
case '-':
result = arg1-arg2;
break;
case '*':
case 'x':
result = arg1*arg2;
break;
case '/':
case '÷':
result = arg1/arg2;
break;
default:
throw new Error();
}
console.log(result);
模块化的好处在我理解主要有以下两点:
- 复用
- 便于维护,如果出现项目多个地方引用,只需修改一处就可以了。
- 模块内部是私有作用域,不会出现命名冲突的问题。
我们把计算部分单独抽离出来为calc.js
// calc.js
function add(arg1,arg2){
return arg1 + arg2;
}
function substract(arg1,arg2){
return arg1 - arg2;
}
function multiple(arg1,arg2){
return arg1 * arg2;
}
function divide(arg1,arg2){
return arg1 / arg2;
}
module.exports = {
add,
substract,
multiple,
divide
};
下面是引用部分commandCalc.js
// commandCalc.js
const calc = require('./calc.js');
// 获取命令行参数
let argv = process.argv.slice(2);
let result = 0,arg1 = parseFloat(argv[0]),arg2 = parseFloat(argv[2]);
switch(argv[1]){
case '+':
result = calc.add(arg1,arg2);
break;
case '-':
result = calc.substract(arg1,arg2);
break;
case '*':
case 'x':
result = calc.multiple(arg1,arg2);
break;
case '/':
case '÷':
result = calc.divide(arg1,arg2);
break;
default:
throw new Error();
}
console.log(result);
node 运行如下命令,可看到结果:
![](https://img.haomeiwen.com/i16641848/5380eeebb76a8e72.png)
网友评论