Node.js的模块化规范

293 阅读2分钟

1.模块化规范

  1. 什么是模块化
    • 一个js文件可以导入另一个js文件
  2. 模块化的好处
    • 1.将功能分离出来 : 一个js文件只负责一个功能,如果摸个功能出现了文件,方便查找和修改
    • 2.按需求导入 : 用到某个功能就导入某个功能,模块化功能是渐进式框架的共同特征
    • 3.变量污染 : 一个js文件都是一个固定的作用域,互不污染

2.模块化语法

3.CommonJS规范实现模块化语法

CommonJS规范只有两句话

  • 模块必须要使用 require() 导入

  • 模块必须要使用 module.exports 导出

注意 : 这两个语法都是nodejs环境自带的全局语法

snipaste20220522_112356.jpg

snipaste20220522_112404.jpg

  • 导出模块语法一般放在js文件最底部,只需要导入一次
  • 开发中,不需要吧模块化全部的变量全部导出

4.模块的缓存机制

  • 1.当一个模块第一次会加载时,nodejs会执行里面的js代码,并且导出模块
  • 2.nodejs会将导出的模块放入缓存中
  • 3.当重复导入一个模块的时候,nodejs会先从缓存中读取模块。 如果缓存中有,就从缓存读取。缓存没有重复步骤1

snipaste20220522_113326.jpg

5.node.js三种模块和require()加载原理

  • 1.nodejs有三种模块

    • 第一种: 核心模块、内置模块

      • nodejs作者写的,这些模块js文件会随着安装nodejs的时候一起安装。因此我们可以直接使用,而无需下载。

        • 例如: fs 、path、http都是核心模块
    • 第二种:第三方模块

      • npm官网上面的模块,这些都是大佬写的模块。需要下载后使用

        • 例如: express、cors、bod-parser
    • 第三种:自定义模块

      • 我们自己写的js文件
  • 2.require('文件路径')加载原理

    • (1)自定义模块:必须要写文件路径, require()会得到这个模块里面的 module.exports 对象

    • (2)第三方模块 :写模块名。 nodejs会自动从你的node_module文件夹里面去找这个模块的名字,然后执行模块里面的index.js代码,得到里面的module.exports

      • 如果当前目录没有module.exports就会从上级目录找,以此类推。一直找到你的磁盘根目录。 还找不到就会报错提示 模块不存在(有点类似于变量作用域就近原则)
    • (3)核心模块:写模块名。 nodejs会自动从你的node安装包路径里面去找。