requireJS异步加载

本文详细解析了requireJS的核心实现原理,介绍了如何将模块抽象成包含依赖、回调及监听属性的对象,并深入探讨了fetch和load两个核心函数的作用,即加载模块文件及递归加载其依赖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

requireJS的核心实现

可以将模块抽象成下面的对象

一个模块可以理解为一个JS文件,具有三个属性:deps(模块的依赖),callback(模块的回调,在所有依赖load之后执行),listener(模块的监听,里面存放当该模块加载完毕,需要通知的对象)

模块加载的核心函数:

fetch --->  加载模块JS文件,并设置回调,当script执行完毕,(也可能模块之前通过define定义过,不是JS文件的模块)触发load方法

load --->   判断fetch结果,若已经fetch完(加载并执行完),递归载入依赖模块,在所有模块载入完毕后(子模块通过自身的listener通知),内部依赖模块计数器归零,执行callback,并通过listener通知所有依赖了此模块的地方;

若未fetch,调用加载方法(动态生成script标签,插入document中,script标签带有onload属性,在script下载并执行完后会触发load事件,onload事件函数中调用load方法加载依赖模块),并return;

 

转载于:https://www.cnblogs.com/querybest/p/9092505.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值