zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    删除重复行的DataFrame
    http各个版本(1/1.1/2)对比
    merge()、. join()和concat()合并Pandas中的数据
    openssl windows 平台编译x86 x64
    openssl windows 平台使用 VS2017 编译openssl源码
    openssl des CBC
    openssl des ECB
    ffmpeg des
    网狐棋牌游戏用户数据库 开发文档
    cmake 附加库目录 附加包含头文件目录 链接库 镜像不安全 宏定义 一个完整的cmake小项目
  • 原文地址:https://www.cnblogs.com/cyITtech/p/3619147.html
Copyright © 2011-2022 走看看