02-Node.js模块化、模块作用域、module.exports

一、什么是模块化

编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成独立并互相依赖的多个小模块。

把代码进行模块化拆分的好处:

  • 提高了代码的复用性
  • 提高了代码的可维护性
  • 可实现按需加载

二、模块分类

1、Node.js中模块的分类

Node.js中根据模块来源的不同,将模块分为三大类,分别是:

  • 内置模块:内置模块是由js官方提供的,例如:fs path、http等。
  • 自定义模块:用户创建js文件都是自定义模块。
  • 第三方模块:由第三方开发出来的模块,并非官方提供的内置模块,也不是用户创建的自定义模块,使用前需要先下载。

注意:使用require()方法加载这些模块时,会执行被加载模块中的代码

三、模块作用域

1、什么是模块作用域

和函数作用域类似在自定义模块中定义的变量、方法等成员,只能在当前模块内被访问,这种模块级别的访问限制叫做模块作用域。

例如:

//模块1 custom.js
const username='张三'

//模块2 test.js
const custom = require('./custom.js')
console.log(custom)
输出空对象
在test.js文件中无法访问custom.js模块中的私有成员

2、模块作用域的好处

防止全局变量污染的问题。

使用js标签的src属性进行文件引入的方式,在导入文件时,都把变量username声明到了全局window对象身上,造成变量污染

3、向外共享当前作用域变量

module.exports对象

在自定义模块中,可以使用 module.exports 对象,将模块内的成员共享出去,供外界使用。外界require()方法导入自定义模块时,得到的是module.exports所指的对象

exports对象

由于module.exports单词写起来比较复杂,为了简化向外共享的成员代码,Node提供了exports对象。默认情况下module.exports和exports指向同一个对象。最终共享结果还是以module.exports为准。

三、CommonJS规范

Node.js遵循了CommonJS模块化规范,CommonJS规定了模块的特性和各模块之间如何相互依赖。

CommonJS规定:
1、每个模块内部,module变量代表当前模块
2、module变量是一个对象,他的exports属性(即 module.exports)是对外的接口
3、加载某个模块其实是加载该模块的module.exports属性,requies()方法用于加载模块

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值