seajs 源码分析四

这篇主要讲最后的seajs源码运行顺序。当然,前面那些零零碎碎的就直接忽略了,就从module那块开始

seajs总的函数调用顺序图如下:

seajs.use调用后会调用Module.preload,如果有预加载模块的话,就需要先调用Module.use(preloadMods,function(){..},...),来完成模块的预加载,在其完成后再正式调用Module.use(ids,...)

mod.load中的resolve函数主要是将mod所依赖的一系列文件路径都计算出来,然后形成数组返回。在load通过循环,逐个的用Module.get得到module实例,然后通过fetch,调用seajs.request得到该文件并执行,由于得到的js文件的话一般有define包裹,define的作用是将factory函数解析,判断其依赖的项目,然后添加的m实例的依赖下,在后面的m.load运行时,就会将这些依赖项目抓取过来,若依赖项目中还有依赖,就会再次进入解析-正则匹配-添加依赖-load抓取。

在一起依赖都完成时,就会执行m.onload函数,这个函数在最后会对依赖这个m的module进行逐一检查,分别减去他们的_remain,并判断remain是否等于0,若等于0,就对这个mod执行mod.onload函数。

在最后的onload函数中,将每个依赖的js都进行执行,这是的exec函数会将原来拿到的js文件中产生的module下的factory进行运行,返回的对象会放在exports下,在最后通过callback.apply(global,exports)来将前面得到的对象作为函数参数传入。

博客地址:http://www.cnblogs.com/cyITtech/

 

 

 

 

转载于:https://www.cnblogs.com/cyITtech/p/3619147.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值