模块化(node.js笔记)

70 阅读2分钟

模块化

  • 模块化:将一个复杂的程序文件根据一定规则(规范)拆分成多个文件的过程
    模块:模块化拆分出的每个文件就是一个模块
    注意:模块内部数据是私有的,但是模块可以暴露内部数据方便其他模块使用)
  • 模块化项目:编码时按照模块一个一个编码的,整个项目就是一个模块化项目
  • 模块化优点
    • 防止命名冲突
    • 高复用性
    • 高维护性

模块暴露数据

模块化的书写

1.创建me.js

const fn=()=>console.log('me')
//暴露数据
module.exports=fn

2.创建index.js

//导入模块
const fn=require('./me.js')
//调用函数
fn()

暴露数据

方式

  • module.exports=value
  • exports.name=value

注意

  • module.exports可以暴露任意数据
  • 模块内部module和exports的隐式关系exports=module.exports={},require返回的是目标模块中module.exports的值

导入(引入)模块

在模块中使用require引入文件
const test=require('./me.js')

require的注意事项

  • 自己创建的模块 导入路径建议写相对路径,不能省略./和../
  • js和json文件导入可以不写后缀
  • 导入其他类型的文件,以js文件进行处理
  • 当导入的路径是一个文件夹,首先检测该文件夹下的package.json文件中main属性对应的文件
    如果存在则导入,不存在时 会报错
    如果main属性或package.json不存在,尝试导入文件夹下的index.jsindex.json
  • 导入node.js内置模块时,直接require模块的名字即可,无需./或../

导入模块流程

  1. 转化为绝对路径,定位目标文件
  2. 缓存检测
  3. 读取目标文件代码
  4. 包裹为一个函数并执行(自执行函数)。通过arguments.callee.toString()查看自执行函数
  5. 缓存模块的值
  6. 返回module.exports的值