一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

深入分析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版本.

热门栏目