Node.js入门教程二之模块的使用

模块化使用的定义

什么是模块化

把代码按照逻辑和功能封装成为各种不同的模块就是代码的模块化。

模块化使用的优点

通过把代码的各自封装,相互独立,降低代码的耦合性的同时,可以自行决定引入执行那些外部模块以及暴露自身的那些模块,有效提升了代码的复用能力和开发效率。

Node.js模块化开发使用实践

Node.js的模块的类型

1.内置模块
2.自定义模块
3.第三方模块

模块的创建和导出

module.exports和exports的使用

Node.js与其他语言使用的区别在于,Node.js在建立模块之后,导出模块前需要把模块的变量和方法共享出去。module.exports和exports就是可以实现这个功能,但是exports是以module.exports为主特点如下:

module.exports和exports同时共享对象时

module.exports和exports同时共享对象时,只有module.exports有效

//这里会替代之前的用法 与上面其实指向同一个对象
module.exports={
    nickname:'小黑子',
    sayhi(){
        console.log("露出鸡脚")
    }
}
//这里也可以使用,但以上面使用为主,require模块的时候,也是使用module.exports
exports = {
    nickname:'纯路人,',
    sayhi(){
        console.log("真的没必要")
    }
}
//直接打印属性可以发现导入的其实module.exports这个对象
const m2 = require('./module102')
//直接导入无法获得module的属性和方法
console.log(m2)
//可直接读取的方法
console.log(m2.nickname)
m2.sayhi()

在这里插入图片描述

module.exports和exports同时共享变量时

当同时共享都是变量时,这两种语法都能起作用,但是当变量名相同时,module.exports优先级高于exports

exports.hobby="唱,跳,rap"
module.exports.name="只因"
module.exports.hobby="铁山靠"
//导入模块
const m2 = require('./module101')
console.log(m2);

在这里插入图片描述

exports属性可以赋予module.exports
module.exports.username="zhangsan"
exports.getAddress=function(){
    console.log('test')
}
exports.age=11
module.exports = exports

在这里插入图片描述

原因分析

模块化使用是对module对象的使用,moduel.exports和exports初始化指向的对象都是相同的,对对象赋值时,将会修改整个的地址值,由于moduel.exports的优先级更高,才会造成上述的现象

模块记载机制小知识点

加载次数:模块优先从缓存里面加载,使用require的时候,加载模块一次
加载的优先级: 内置模块加载优先级>第三方加载机制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值