模块化

2021/12/25

# 介绍

模块化的引入

  • 项目的难点:管理变量
  • 出现问题:变量污染
  • 解决命名污染技术进步:
    1. 闭包,每个函数有自己独立的作用域。问题:闭包之间要互相通信呢?
    2. 接口,写个函数拿到数据接口
    3. 模块化,谁要用谁引用
  • commonJS是同步加载,所以浏览器端没有引入。而是有了esm规范
  • 按需引入的重点是利用promise

# commonJS

# 加载顺序

commonJS

  • 同步加载:require的文件会先被执行一遍,然后将暴露的 exports内容赋值给要接收的变量

# 值的拷贝

值引用

  • 引用的值属于拷贝了一份,值修改与原值无关

# 手写require

思路

  1. 入参就是引入文件的路径
  2. 输出是 mudule.exports
  3. exports 是 module.exports的引用

文件目录:

require.js
main.js
a.js
b.js

# ES6 模块化

# 介绍

ES6模块化

  • 拿的是引用拷贝
  • 先会静态解析,不执行代码,生成依赖关系图,然后根据依赖关系图进行解析执行

# 加载顺序

  • import 有变量提升效果
  • 目录:

server.js
main.html
a.js
b.js

# 值的引用

引用拷贝

  • es的模块化拿的是原值的引用,所以多次引用一个值拿的是同一个值
  • 目录:

server.js
main.html
b.js

上次更新: 9/17/2024