node.js学习13--自定义模块

自定义模块

开发者自己写的模块就是自定义模块。在node.js中 ,对代码的封装是以模块(一个一个的文件)为单位进行的。一般的做法是实现好某一个功能之后,封装成一个模块,然后在其它文件中使用这个模块。

使用一个模块,就是在一个js文件中去使用另一个js文件中定义的变量,常量,函数…

基本步骤

  1. 定义模块

    新建一个js文件,用模块名给它命名。例如,模块叫myModule,则这个js文件最好叫myModule.js

  2. 导出模块

    在myModule.js内部,定义一些函数,变量,当然,它们会根据业务要求做一些不同的工作。最后根据情况导出这些函数,变量。

//myModule.js
const myPI = 3;
function add(a, b) {
    return a + b;
}

// 通过module.exports来导出
module.exports = {
    myPI,
    add
};

注意:

  • module.exports 是固定写法,一般放在文件的最末尾,也只用一次。
  • module.exports表示当前模块要暴露给其它模块的功能。当然不需要把所有在模块中定义的函数都暴露出来。
  1. 引入模块

    在需要使用模块的文件中,使用require语句引入定义好的模块,注意使用相对路径。假设当前的文件是index.js,而希望在index.js文件中使用myModule.js中的add方法。

做法是:

// index.js
const myMath = require('./myMath');

// require()就是用来引入模块的

注意:使用自定义模块时,使用相对路径,而使用核心模块时,不需要写路径。

  1. 使用模块

    当一个模块被成功引入之后,就可以按使用核心模块的过程一样去使用它们了。

// index.js
const myMath = require('./myMath');

// 在使用之前请先打印出来看看。
console.log(myMath);

let rs = myMath.add(23,45);
console.log(rs)   // 68

导出模块的两种方式

在自定义模块过程中,有两种导出模块内容的方式:

  • exports
  • module.exports

参考
它们的关系是: exports是module.exports的别名,即:

exports === module.exports

所以下面两种写法的效果是一样的:

// 1 mymodule.js
exports.f = function(){ }
exports.pi = 3.1415926
// 2 mymodule.js
module.exports.f = function(){ }
module.exports.pi = 3.1415926

区别在于:

  • 在引入某模块时,以该模块中module.exports指向的内容为准。
  • 在定义模块时:
    • 在初始时,exports和module.exports是指向同一块内存区域,其内容都是一个空对象。
    • 如果直接给exports对象赋值(例如:exports={a:1,b:2}),此时,exports就不会再指向module.exports,而转而指向这个新对象,此时,exports与module.exports不是同一个对象。而在引入模块时,是以模块的中的module.exports为准,因此,此时写在exports上的对象是无法导出的。
  • 在导出模块过程中,建议只用一种方式(建议直接使用module.exports)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值