最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
深入分析seajs加载过程
时间:2014-04-04 编辑:简简单单 来源:一聚教程网
define添加到到seajs.cache里里#723 => 检测检测下依赖+返回值整个 #746 => 页面use触发(主入口,并留下回调埋点)#795 => 执行mod.load#813 => 分析所有依赖如果没有加载则加载#557 => fetch是加载js文件 => 如果全部加载完成执行mod.onload => onload负责运行回调(use里的埋点,CA又转回来了##798) => 回调里又运行所有依赖模块的exec#662 => exec里负责查看define的模块是是否被运行#668,如果没有运行则建立一个require的临时fn当param运行运行#677 并把返回结果打在mod的exports上上#704, 反返回给回调那那处理#710 #803, 这也是怎么能use([1,2,3],function(1,2,3){})的的原因 => 到这里已经加载完所有的依赖了,且拿到回调了#805 => 如果有callback还不运行等着干啥呢? #807
其实就一句话:
定义->缓存(依赖+整个fn)->use触发->判断依赖->判断所有依赖+js文件是否加载成功->判断每个模块的fn是否被运行->拿到每个模块的返回值->执行回调, 当然其中的心酸只有玉伯知道,比如 模块依赖模块,url解析 等... 那个提前预加载preload跟依赖相比就略显轻松了
注: 以上代码行号为2.2.1版本.
相关文章
- JS异步加载的三种实现方式 07-03
- 详解VueJs异步动态加载块 06-13
- 详解基于angular路由的requireJs按需加载js 02-09
- js模块加载seajs框架的教程 10-29
- js延时加载特效代码 09-14
- js中判断iframe是否加载完成 02-20