什么是模块化
模块化:解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元 (简单来说就是一个js文件中可以引入另一个js文件的数据。)
编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成独立并互相依赖的多个小模块
模块化拆分的好处是什么(模块化的好处):
- 提高代码的复用性
- 提高了代码的可维护性
- 可以实现按需加载
什么是模块作用域 , 它的好处是什么?
和函数作用域类似,在自定义模块中定义的变量、方法等成员,只能在当前模块内被访问,外部文件是访问不到的,这种模块级别的访问限制,叫做模块作用域
防止了全局变量污染、文件依赖等问题的产生
Node中模块的三大分类
-
内置模块(内置模块是由
Node.js
官方提供的,例如fs
、path
、http
等) -
自定义模块(用户创建的每个
.js
文件,都是自定 义模块) -
第三方模块(由第三方开发出来的模块,并非官方提供的内置模块,也不是用户创建的自定义模块,( 使用前需要先下载 )
模块规范
CommonJs跟ES6应该用的最多
-
CommonJS 规范:nodejs中遵守的就是commonjs规范。
-
ES6 模块化规范:(前后端通用的模块化规范;Node.js、Vue、React 中都能使用!)
-
CMD 和 AMD 模块化规范(较少使用): CMD--sea.js, AMD-require.js
-
UMD 叫做通用模块定义规范(Universal Module Definition),它可以通过运行时或者编译时让同一个代码模块在使用 CommonJs、CMD 甚至是 AMD 的项目中运行。它没有自己专有的规范,是集结了 CommonJs、CMD、AMD 的规范于一身。
CommonJs模块化的规范
- Node.js遵循了CommonJs模块化规范 , CommonJs规定了模块的特性和各模块之间如何相互依赖
- CommonJs规定:
-
每个模块内部,
module
变量代表当前模块 -
module
变量是一个对象,它的exports
属性(即module.exports
)是对外的接口 -
加载某个模块,其实是加载该模块的
module.exports
属性。require() 方法用于加载模块