写在前面
在上两篇博客中,我已经初步介绍了系统模块和post和get请求。
在这篇博客中,我会介绍如何写和用自己的模块。
写模块
module.exports = {
add:function(){
var sum = 0;
for(var i=0;i<arguments.length;i++){
sum+=arguments[i];
}
return sum;
},
sub:function(a,b){
return a-b;
},
mul:function(a,b){
return a*b;
},
div:function(a,b){
return a/b;
}
}
这是我写的一个简单的math模块,可以实现简单的运算。
这里有几点需要注意:
exports
exports = module.exports,它本就是module对象的一个键。
exports.a = function(){......},
exports.b = function(){......}
等价于
module.exports = {
a:function(){......},
b:function(){......}
}
全局对象,不存在的
有人可能会想:我在自定义模块里如果写了"var a = 12;"
并引用了math模块 "const math = require('./math');"
那么math.a的值是什么呢?
答案是 undefined!
如果你想要math.a有值,你必须这样写:
exports.a = 12;
为什么呢?因为不管你是否愿意,模块都会自动在你写的模块里函数外加上这样一段代码:
(function(require,exports,module){
/*这里是你自己的代码
module.exports = {
}
*/
})();
这样有两个好处:
1,避免了变量的污染
2,提高了自由度。只有想输出的(exports)才会被访问到。
用模块
第一步:引入模块
const math = require('./math');
第二步:使用模块
math.add(1,2,3,4);
math.sub(4,5);
这里有一点需要注意
require 模块寻找
1、如果有"./"
从当前目录找
2、如果没有"./"
1、从系统模块找
2、系统模块没有,从node_modules找
上传模块
首先你要有一个npm的账号,并且登录
npm login
上传前处理,你要输入包名,版本,作者,描述等等信息
npm init
这时候确认无误就可以上传了
npm publish
当然,你也可以撤销上传模块
npm unpublish