初窥nodejs(三) ——自定义模块

写在前面

在上两篇博客中,我已经初步介绍了系统模块和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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值